(57)【要約】  本発明は、コア数の増加に伴うレイテンシの悪化を改善することを課題とする。本発明の一態様である演算処理装置は、それぞれ演算を行うとともにアクセス要求を出力する複数の演算処理部と、前記複数の演算処理部がそれぞれ演算したデータをキャッシュブロックに保持するキャッシュメモリと、制御対象のキャッシュブロックを特定する制御対象アドレスと制御対象のアクセス要求元の演算処理部を示す制御対象識別情報を保持する保持部と、前記複数の演算処理部のいずれかが発行したアクセス要求に含まれるアクセス対象アドレスと前記アクセス要求を発行した演算処理部を示す要求元識別情報に基づき、前記制御対象アドレスと前記制御対象識別情報により特定されるキャッシュブロックに対するアクセス要求を制御する制御部を有する。
2013084314.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ演算を行うとともにアクセス要求を出力する複数の演算処理部と、
前記複数の演算処理部がそれぞれ演算したデータをキャッシュブロックに保持するキャッシュメモリと、
制御対象のキャッシュブロックを特定する制御対象アドレスと制御対象のアクセス要求元の演算処理部を示す制御対象識別情報を保持する保持部と、
前記複数の演算処理部のいずれかが発行したアクセス要求に含まれるアクセス対象アドレスと前記アクセス要求を発行した演算処理部を示す要求元識別情報に基づき、前記制御対象アドレスと前記制御対象識別情報により特定されるキャッシュブロックに対するアクセス要求を制御する制御部を有することを特徴とする演算処理装置。
【請求項２】
前記制御部はさらに、
複数の演算処理部が同一のキャッシュブロックに対して発行した複数のアクセス要求に対応する完了応答のうち、最後に完了した最終完了応答を検出する検出部と、
前記最終完了応答に対応して発行されるアクセス要求に含まれるアドレスと同一のアドレスに対するアクセス要求が、前記複数の演算処理部のいずれかから発行された場合、前記最終完了応答に応じて発行されるアクセス要求を抑止することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記制御部はさらに、
前記最終完了応答に対応して発行されるアクセス要求を抑止した後、前記抑止されたアクセス要求を発行することを特徴とする請求項２記載の演算処理装置。
【請求項４】
それぞれ演算を行うとともにアクセス要求を出力する複数の演算処理部と、前記複数の演算処理部がそれぞれ演算したデータをキャッシュブロックに保持するキャッシュメモリと、制御対象のキャッシュブロックを特定する制御対象アドレスと制御対象のアクセス要求元の演算処理部を示す制御対象識別情報を保持する保持部を有する演算処理装置の制御方法において、
前記複数の演算処理部のいずれかが、アクセス要求を出力し、
前記演算処理装置が有する制御部が、前記複数の演算処理部のいずれかが発行したアクセス要求に含まれるアクセス対象アドレスと前記アクセス要求を発行した演算処理部を示す要求元識別情報に基づき、前記制御対象アドレスと前記制御対象識別情報により特定されるキャッシュブロックに対するアクセス要求を制御することを特徴とする演算処理装置の制御方法。
【請求項５】
前記演算処理装置の制御方法はさらに、
前記制御部が、複数の演算処理部が同一のキャッシュブロックに対して発行した複数のアクセス要求に対応する完了応答のうち、最後に完了した最終完了応答を検出し、
前記制御部が、前記最終完了応答に対応して発行されるアクセス要求に含まれるアドレスと同一のアドレスに対するアクセス要求が、前記複数の演算処理部のいずれかから発行された場合、前記最終完了応答に応じて発行されるアクセス要求を抑止することを特徴とする請求項４記載の演算処理装置の制御方法。
【請求項６】
前記演算処理装置の制御方法はさらに、
前記制御部が、前記最終完了応答に対応して発行されるアクセス要求を抑止した後、前記抑止されたアクセス要求を発行することを特徴とする請求項５記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、プロセッサコアの実行速度と主記憶装置に対するアクセス速度との差を埋めるために、キャッシュメモリが用いられる。アクセス速度とメモリ容量とのトレードオフの関係から、大抵のキャッシュメモリは、２階層以上に階層化されている。階層化されたキャッシュメモリは、プロセッサコアから近い順に、１次（Ｌ１）キャッシュメモリ、２次（Ｌ２）キャッシュメモリ等と呼ばれる。なお、以下、プロセッサコアを単に「コア」とも記載する。主記憶装置を単に「メモリ」又は「メインメモリ」とも記載する。キャッシュメモリを単に「キャッシュ」とも記載する。【０００３】
メインメモリのデータは、ブロックを単位としてキャッシュメモリに対応付けられる。キャッシュメモリのブロックとメインメモリのブロックとの対応付け方式として、セットアソシアティブ（set associative）方式が知られている。なお、以下では、メインメモリのブロックとキャッシュメモリのブロックとを区別するために、メインメモリのブロックを特に「メモリブロック」と表記する。また、キャッシュメモリのブロックを「キャッシュブロック」又は、「ライン」と表記する。【０００４】
セットアソシアティブ方式とは、メインメモリ及びキャッシュメモリをいくつかのセットに分け、各セット内において、メインメモリとキャッシュメモリとの対応付けを行う方式である。なお、セットは、カラムとも呼ばれる。セットアソシアティブ方式では、キャッシュメモリの各セット内に収容可能なキャッシュブロックの数が定められている。当該収容可能なキャッシュブロックの数は、ロー数、レベル数、又は、ウェイ数と呼ばれる。【０００５】
セットアソシアティブ方式では、キャッシュブロックは、インデックスとウェイ情報によって、識別される。具体的には、インデックスによって、該当キャッシュブロックを収容するセットが識別される。また、ウェイ情報によって、セット内に収容されるキャッシュブロックのうちの該当キャッシュブロックが識別される。ウェイ情報は、例えば、該当キャッシュブロックの識別に用いられるウェイ番号である。【０００６】
メモリブロックとキャッシュブロックとの割り当てには、割り当て対象となるメモリブロックのアドレスが用いられる。セットアソシアティブ方式では、割り当て対象となるメモリブロックは、当該メモリブロックのアドレスの一部と一致するインデックスにより示されるセットに収容されるいずれかのキャッシュブロックに割り当てられる。つまり、アドレスの一部によって、キャッシュメモリ内のインデックスが指定される。このキャッシュメモリ内のインデックスを指定するために使われる当該アドレスの一部は、セットアドレスとも呼ばれる。【０００７】
なお、当該割り当てに用いられるアドレスは、物理アドレス（実アドレス）及び論理アドレス（仮想アドレス）のいずれのアドレスでもよい。これらのアドレスは、ビットにより表わされる。メインメモリにおいて、同一のセットに収容されるメモリブロックは、同一のセットアドレスを有するメモリブロックである。【０００８】
メインメモリは、一般的に、キャッシュメモリよりも容量が大きい。そのため、メインメモリにおけるセットに収容されるメモリブロックの数は、キャッシュメモリにおけるセットに収容されるキャッシュブロックの数よりも多い。したがって、メインメモリ内の全てのメモリブロックをキャッシュメモリ内のキャッシュブロックに割り当てることはできない。つまり、メインメモリにおける各セットに収容されるメモリブロックは、キャッシュメモリにおける各セットに収容されるキャッシュブロックに割り当てられているメモリブロックと、割り当てられていないメモリブロックとに分けることができる。【０００９】
ここで、例えば、プロセッサコアにより指定されたアドレスに該当するメモリブロックの代わりに、当該メモリブロックが割り当てられたキャッシュブロックから、データを取得する場面を考える。この場合、キャッシュメモリ内において、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックが検索される。【００１０】
当該検索においてキャッシュブロックがヒットすれば、プロセッサコアは、指定するデータを、キャッシュメモリ内のヒットしたキャッシュブロックから取得することができる。他方、当該検索においてキャッシュブロックがヒットしなければ、プロセッサコアは、指定するデータをキャッシュメモリから取得することはできない。この場合、プロセッサコアは、指定するデータをメインメモリから取得する。このような場面は、キャッシュミスヒットとも呼ばれる。【００１１】
なお、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックの検索には、インデックスとキャッシュタグとが用いられる。インデックスは、上述の通り、該当キャッシュブロックを収容するセットを示す。また、キャッシュタグは、各セット内において、メモリブロックに対応するキャッシュブロックを検索するために用いられる。【００１２】
キャッシュタグは、キャッシュブロック毎に設けられる。キャッシュブロックにメモリブロックが割り当てられた際、当該キャッシュブロックに対応するキャッシュタグには、当該メモリブロックのアドレスの一部が格納される。このキャッシュタグに格納されるアドレスの一部は、セットアドレスとは異なる。具体的には、キャッシュタグには、当該メモリブロックのアドレスからセットアドレスを除いた部分から取得される適当なビット長のアドレスが格納される。なお、キャッシュタグに格納されるアドレスを、以下、タグアドレスと表記する。【００１３】
このようなインデックスとキャッシュタグが用いられて、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックが検索される。【００１４】
例えば、まず、キャッシュメモリから、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックを収容する可能性のあるセットが検索される。具体的には、キャッシュメモリから、プロセッサコアにより指定されたアドレスのセットアドレス該当部分のアドレスと一致するインデックスが検索される。このときに検索されるインデックスにより示されるセットが、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックを収容する可能性のあるセットである。【００１５】
そして、検索されたインデックスにより示されるセットに収容されるキャッシュブロックから、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックが検索される。具体的には、検索されたセットに収容される各キャッシュブロックに対応付けられたキャッシュタグのうち、プロセッサコアにより指定されたアドレスのタグアドレス該当部分のアドレスを格納するキャッシュタグが検索される。このときに検索されるキャッシュタグに対応付けられたキャッシュブロックが、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックである。【００１６】
なお、当該検索において、プロセッサコアにより指定されたアドレスのタグアドレス該当部分を格納するキャッシュタグが検索されなければ、キャッシュミスヒットである。この場合、プロセッサコアにより指定されたアドレスに該当するメモリブロックに割り当てられたキャッシュブロックは、キャッシュメモリ内には存在しない。そのため、プロセッサコアにより指定されるデータは、メインメモリから取得される。【００１７】
プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックは、このように検索される。これにより、メモリブロックに格納されているデータがキャッシュメモリにも格納されている場合は、当該データは、キャッシュメモリから取得される。他方、メモリブロックに格納されているデータがキャッシュメモリに格納されていない場合は、当該データは、メモリブロックから取得される。【００１８】
なお、キャッシュメモリのブロックとメインメモリのブロックとの対応付け方式として、セットアソシアティブ方式の他に、ダイレクトマッピング方式、フルアソシアティブ方式等の方式が知られている。ダイレクトマッピング方式は、メインメモリのブロックのアドレスによって対応付けられるキャッシュメモリのブロックを定める方式である。ダイレクトマッピング方式は、セットアソシアティブ方式におけるウェイ数が１である場合の対応付け方式に該当する。また、フルアソシアティブ方式は、キャッシュメモリの任意のブロックとメインメモリの任意のブロックとを対応させる方式である。【００１９】
一方、近年、チップ当たりの性能向上及び消費電力削減の観点から、プロセッサコアを複数個備えるマルチコアプロセッサシステムが主流となってきている。このマルチコアプロセッサシステムにおいて、例えば、各々のプロセッサコアが１次キャッシュメモリを有し、複数のプロセッサコアによって２次キャッシュメモリが共有されるマルチコアプロセッサシステムが知られている。【００２０】
このとき、２次キャッシュメモリは、当該２次キャッシュメモリを共有する複数のプロセッサコアが有する１次キャッシュメモリと当該２次キャッシュメモリとの間で、キャッシュメモリ間の整合性であるキャッシュコヒーレンシを維持する機構を備える。キャッシュコヒーレンシを維持するために、２次キャッシュメモリは、あるプロセッサコアからデータを要求された場合、各プロセッサコアが有する１次キャッシュメモリに当該要求に係るデータが格納されているか否かを調べる。【００２１】
あるプロセッサコアから要求されたデータが各１次キャッシュメモリに格納されているか否かを調べる方法として、データ要求がある度に、全プロセッサコアの１次キャッシュメモリに対して２次キャッシュメモリがスヌープを行なう方法が知られている。しかし、この方法では、１次キャッシュメモリから問い合わせ結果が返ってくるまでのマシンサイクルがかかる分、データ要求に対する応答までのレイテンシが長くなってしまう。【００２２】
特許文献１では、このレイテンシを改善する方法が開示されている。特許文献１では、１次キャッシュメモリのキャッシュタグのコピーを２次キャッシュメモリのキャッシュタグ内に格納することで、１次キャッシュメモリへのスヌープ処理を不要とする方法が開示されている。【００２３】
１次キャッシュメモリのキャッシュタグのコピーが２次キャッシュメモリのキャッシュタグ内に格納されていると、２次キャッシュメモリは、自身のキャッシュタグにおいて１次キャッシュメモリの状態を参照することが可能となる。そのため、２次キャッシュメモリは、１次キャッシュメモリに対してスヌープしなくても、あるプロセッサコアから要求されたデータが各１次キャッシュメモリに格納されているか否かを調べることができる。特許文献１では、このような方法により、レイテンシを改善する方法が開示されている。なお、以下、１次キャッシュメモリのキャッシュタグをＬ１タグと呼ぶ。また、２次キャッシュメモリのキャッシュタグをＬ２タグと呼ぶ。【００２４】
しかしながら、２次キャッシュメモリの容量と１次キャッシュメモリの容量との差が大きいほど、２次キャッシュメモリに格納されるデータは、１次キャッシュメモリに格納されない。そのため、Ｌ１タグのコピーを格納する領域をＬ２タグ内に設けると、Ｌ２タグ内のＬ１タグコピーを格納する領域がほとんど使用されない無駄な領域となってしまう。物量と消費電力の観点からこの状態は好ましくないため、改善が求められていた。【００２５】
特許文献２及び３では、この無駄な領域を改善する方法が開示されている。特許文献２及び３では、Ｌ１タグのコピーの代わりに、各１次キャッシュメモリにおける該当ラインの共有状態を示す情報をＬ２タグ内に格納し、Ｌ１タグのコピーをＬ２タグとは別の領域に格納する方法が開示されている。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２００６−４０１７５号公報
【特許文献２】特許第４２９７９６８号公報
【特許文献３】特開２０１１−６５５７４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２７】
図１は、マルチコア・プロセッサにおける１次キャッシュと２次キャッシュの接続例を示す。図１により示される接続例では、各コア（７００、７１０、・・・、７ｎ０）はそれぞれ、１次キャッシュ（７０１、７１１、・・・、７ｎ１）を備える。なお、ｎは自然数である。そして、２次キャッシュ８００は、各コア（７００、７１０、・・・、７ｎ０）によって共有される。図１により示される接続例では、２次キャッシュ８００は、各コア（７００、７１０、・・・、７ｎ０）とメモリ９００との間に存在する。【００２８】
また、各１次キャッシュ（７０１、７１１、・・・、７ｎ１）における該当ラインの共有状態を示すＬ１共有情報８１１を格納する領域がＬ２タグ８１０内の領域に設けられている。【００２９】
更に、２次キャッシュ８００内には、Ｌ２タグ８１０とは別の領域に、Ｌ１タグのコピーであるＬ１タグコピー８２０を格納する領域が設けられている。図１において、Ｌ１タグコピー８３０は、コア７００の１次キャッシュタグであるＬ１タグ７０２のコピーである。Ｌ１タグコピー８３１は、コア７１０の１次キャッシュタグであるＬ１タグ７１２のコピーである。Ｌ１タグコピー８３ｎは、コア７ｎ０の１次キャッシュタグであるＬ１タグ７ｎ２のコピーである。なお、各１次キャッシュ（７０１、７１１、・・・、７ｎ１）及び２次キャッシュ８００のデータ格納構造には、セットアソシアティブ方式が採用されているとする。【００３０】
２次キャッシュ８００では、コア（７００、７１０、・・・、７ｎ０）からのアクセス要求に応じて、当該アクセス要求に係る処理が実行される。２次キャッシュ８００は、１つ以上のパイプラインを備えることにより、コア（７００、７１０、・・・、７ｎ０）からのアクセス要求に応じた処理を並列処理することが可能である。なお、以下、アクセス要求を「リクエスト」とも記載する。【００３１】
このような２次キャッシュ８００において、あるひとつのキャッシュラインに対して同時期に複数のアクセス要求が発行される場合がある。一例として、あるひとつのキャッシュラインに対応する各１次キャッシュ（７０１、７１１、・・・、７ｎ１）のキャッシュラインを一括で無効化する処理が挙げられる。当該一括で無効化する処理は、２次キャッシュ８００のキャッシュラインに対応する１次キャッシュの各キャッシュブロックを全て無効化するための処理である。当該一括で無効化する処理は、例えば、当該１次キャッシュのいずれかのキャッシュブロックで更新が起きた際に、キャッシュコヒーレンシを維持するために実行される。【００３２】
この場合、例えば、特許文献２では、全てのコア（７００、７１０、・・・、７ｎ０）に対して、各１次キャッシュ（７０１、７１１、・・・、７ｎ１）の該当キャッシュラインを無効化するアクセス要求がブロードキャストされる。また、例えば、特許文献３では、該当するキャッシュラインを持つコアに対して選択的に当該キャッシュラインを無効化するアクセス要求が発行される。これらの処理により、２次キャッシュ８００のキャッシュラインに対応する各１次キャッシュ（７０１、７１１、・・・、７ｎ１）のキャッシュラインが無効化される。【００３３】
いずれの処理においても、２次キャッシュ８００のキャッシュラインに対応する１次キャッシュのキャッシュブロックは全て無効化される。そのため、当該処理後、当該無効化に係る２次キャッシュ８００のキャッシュラインに対応するＬ２タグ８１０内のＬ１共有情報８１１は、「ＩＮＶ」に更新される。なお、「ＩＮＶ」とは、対応するキャッシュブロックが無効である状態（invalid状態）を示す。すなわち、「ＩＮＶ」とは、対応するキャッシュブロックが全ての１次キャッシュ（７０１、７１１、・・・、７ｎ１）において有効な状態で存在しないことを示す。【００３４】
このような１次キャッシュのキャッシュブロックの無効化処理は、一括で実行される。図２は、このような一括で実行される無効化処理の動作例を示す。当該一括で実行される無効化処理は、次のように実行される。なお、図２では、ステップを「Ｓ」と略称する。その他の図においても同様の略称を利用する。また、図２では、コア数（ｎ+１）が４である例を示す。なお後述する図３及び５においても、コア数（ｎ+１）が４である例を示す。【００３５】
まず、Ｌ２キャッシュ制御部８４０は、無効化の対象である２次キャッシュ８００のキャッシュブロックに対応する１次キャッシュのキャッシュブロックを、Ｌ１タグコピー８２０を用いて検索する（ステップ１００１）。なお、図２に示される各Ｌ１タグコピー内に記載された「ＶＡＬ」は、各Ｌ１タグコピーに対応するキャッシュブロックにおいて有効にデータが保持されている状態（valid状態）ことを示す。【００３６】
次に、Ｌ２キャッシュ制御部８４０は、無効化の対象であるキャッシュブロックを有するコア（１次キャッシュ）に対して、該当キャッシュブロックの無効化要求を一括で発行する（ステップ１００２）。それと共に、Ｌ２キャッシュ制御部８４０は、Ｌ１タグコピー８２０の検索結果に基づいて、１次キャッシュに対して発行する無効化のアクセス要求の発行数をカウンタに設定する（ステップ１００３）。設定される発行数は、Ｌ１タグコピー８２０を用いて検索された１次キャッシュ（７０１、７１１、・・・、７ｎ１）のキャッシュラインの数である。このような発行数が設定されるカウンタは、例えば、２次キャッシュ８００内に用意される。【００３７】
そして、各コアでは、当該無効化要求に応じて、該当キャッシュブロックの無効化処理が実行される。そして、無効化処理が完了すると、コアは、２次キャッシュ８００に対して完了応答を返す（ステップ１００４）。【００３８】
Ｌ２キャッシュ制御部８４０は、コアから無効化処理の完了応答が返ってくるたびに、カウンタに設定された数を１ずつ減算する（ステップ１００５）。このように減算すると、複数のアクセス要求に対応する完了応答のうち、最後に完了した最終の完了応答（以下、「最終完了応答」とも記載する。）に応じてＬ２キャッシュ制御部８４０がカウンタに設定された数を減算した際、カウンタに設定された数は０になる。これにより、Ｌ２キャッシュ制御部８４０は、コアからの完了応答が、２次キャッシュ８００における同一のキャッシュブロックに対する最終の完了応答であるか否かを判定する。【００３９】
Ｌ２キャッシュ制御部８４０は、コアからの完了応答が最終の完了応答であると判定すると、無効化処理を実行したキャッシュブロックに対応するＬ１タグコピーに含まれるキャッシュブロックの状態を示すデータを「ＩＮＶ」に更新する。また、Ｌ２キャッシュ制御部８４０は、無効化の対象である２次キャッシュ８００のキャッシュブロックに対応するＬ２タグ８１０内に存在するＬ１共有情報８１１を「ＩＮＶ」に更新する（ステップ１００６）。このようにして、２次キャッシュ８００のキャッシュラインに対応する１次キャッシュのキャッシュブロックが一括で無効化される。【００４０】
この一括で実行される無効化処理に応じて、ステップ１００６では、Ｌ１タグコピー８２０が一括で更新される。Ｌ１タグコピー８２０の更新は、パイプライン上の処理において、後述する「Read Modify Write」によって、実行される。当該更新処理では、更新対象が存在するキャッシュブロックを示すインデックスにおけるＬ１タグコピー８２０のリードを保証するため、パイプライン上において、先行する更新処理が存在する場合、後続の更新処理は再実行（リトライ）される。【００４１】
図３は、一括で実行される無効化処理の際にリードが保証されるＬ１タグコピー８２０のエントリを例示する。図３で示される例では、無効化処理の対象は、インデックス「２」に該当するキャッシュブロックのうち斜線で示されるエントリに対応するキャッシュブロックである。この場合に一括無効化を実行する際、図３で示されるとおり、インデックス「２」に該当するキャッシュブロックのリードが保証される。このとき、パイプライン上において、当該インデックス「２」に該当するいずれかのキャッシュブロックに対する更新処理が先行して存在する場合、Ｌ１タグコピー８２０の一括更新処理はリトライされる。【００４２】
なお、図３における「w0」及び「w1」は、それぞれ、ウェイ番号「０」及び「１」を示す。当該ウェイ番号により、ウェイが識別される。また、「if」及び「op」は、それぞれ、命令（IF）キャッシュとオペランド（OP）キャッシュとを示す。【００４３】
図４は、このリトライ処理の制御を例示する。また、図５は、実行される「Read Modify Write」による更新処理を例示する。【００４４】
図４に示されるとおり、まず、更新処理の対象であるＬ１タグコピー８２０のエントリに格納されたデータが読み込まれる（read）。図３及び５で示される例では、インデックス「２」に該当するエントリに格納されるデータが処理対象となっている。【００４５】
次に、Ｌ１タグコピー８２０の一括更新処理が実行可能か否か判定される。例えば、Ｌ１タグコピー８２０の一括更新処理の対象が、図３及び５に示されるインデックス「２」における斜線部のエントリであるとする。この場合、当該インデックス「２」に該当するいずれかのエントリに対する更新処理がパイプライン上に流される先行処理として存在するか否かに応じて、Ｌ１タグコピー８２０の一括更新処理が実行可能か否か判定される。【００４６】
具体的には、パイプライン上に流れる先行処理に、当該インデックス「２」に該当するいずれかのキャッシュブロックに対する更新処理が存在するとき、Ｌ１タグコピー８２０の一括更新処理は、実行できないと判定される。このとき、Ｌ１タグコピー８２０の一括更新処理（後続処理）は、リトライされる。他方、パイプライン上に流れる先行処理に、当該インデックス「２」に該当するいずれのキャッシュブロックに対する更新処理も存在しないとき、Ｌ１タグコピー８２０の一括更新処理は、実行可能であると判定される。このとき、Ｌ１タグコピー８２０の一括更新処理は、実行に移される。【００４７】
そして、Ｌ１タグコピー８２０の一括更新処理が実行に移されると、パイプライン上において、更新対象のエントリに係るデータが修正されることで、Ｌ１タグコピー８２０を更新するためのデータが生成される（modify）。図５で示される例では、パイプライン上では、斜線部のエントリに対応するキャッシュブロックの状態を示すデータが「ＩＮＶ」に修正される。【００４８】
更に、図４及び５に示されるとおり、生成されたデータがＬ１タグコピー８２０に書き込まれる（write）ことで、Ｌ１タグコピー８２０が一括更新される。このようにして、Ｌ１タグコピー８２０が一括更新される。【００４９】
図２から５において示される制御方式では、Ｌ１タグコピー８２０は、最終の応答完了が検出された後、一括して無効化される。このとき、Ｌ１タグコピー８２０における更新対象のエントリを特定するために、Ｌ２タグ８１０の検索結果（ヒット情報）が用いられる場合がある。Ｌ１タグコピー８２０の検索にＬ２タグ８１０の検索結果が用いられるのは、Ｌ１タグコピー８２０の物量やディレイ等の実装上の制約があるためである。このような場合、Ｌ２タグ８１０を検索し、更にＬ１タグコピー８２０を検索した後に、一括更新処理のリトライ判定が実行されるため、当該リトライ判定のタイミングが遅くなってしまう。【００５０】
また、このような一括無効化処理のリトライ判定では、コア数分のＬ１タグコピー８２０のヒット情報の論理和がとられる。図６は、従来方式のリトライ判定の論理回路を例示する。図６に示されるとおり、従来方式のリトライ判定では、コア数分のＬ１タグコピー８２０のヒット情報の論理和を生成する必要が有るため、コアが増えるほど、ゲート遅延の問題が発生する。【００５１】
一方、２次キャッシュ８００のあるひとつのラインに対して同時期に複数のアクセス要求が発生するケースは、上記一括無効化処理以外にも存在する。同一のラインに同時期に複数のアクセス要求が発生するケースとして、例えば、各コアで個別に発生するＬ１リプレースに基づくアクセス要求が同時期に発生したケースが挙げられる。【００５２】
Ｌ１リプレースは、例えば、１次キャッシュにおいてキャッシュミスヒットした場合に発生する置き換え処理である。コアから要求されるデータが１次キャッシュに格納されていない場合、当該データは、２次キャッシュ又はメモリから取得され、１次キャッシュに格納される。１次キャッシュにおいて、当該データは、当該データのアドレスの一部と一致するインデックスで特定されるセット内におけるいずれかのラインに格納される。【００５３】
このように１次キャッシュにデータを書き込む際、書き込み対象のセット内におけるすべてのラインにデータが格納されており、書き込み対象のセット内のラインに空きがないときがある。このとき、コアから要求されるデータを１次キャッシュに書き込むため、ＬＲＵ（Least Recently Used）等の置き換えアルゴリズムに基づいて特定されたラインにおいて、データの置き換え処理が発生する。この置き換え処理が、Ｌ１リプレースである。【００５４】
なお、以下、Ｌ１リプレースにおいて、置き換え対象のラインに書き込まれるデータ及び当該データに対応するアドレスを、それぞれ、リプレース要求データ及びリプレース要求アドレスと呼ぶ。上述のとおり、当該リプレース要求データが、コアからのアクセス要求の対象となっているデータである。また、Ｌ１リプレースによって、リプレース要求データに置き換えられるデータ及び当該データに対応するアドレスを、ぞれぞれ、リプレース対象データ及びリプレース対象アドレスと呼ぶ。【００５５】
コアは、Ｌ１リプレースを実行する際に、２次キャッシュ８００に対して、Ｌ１リプレースに係るリプレース要求データの取得を要求する。２次キャッシュ８００では、当該要求に応じて、リプレース要求データを格納するラインが検索される。そして、２次キャッシュ８００は、Ｌ１リプレースに係るリプレース要求データの取得を要求したコアに対して、検索されたラインから取得されるリプレース要求データと共に、Ｌ１リプレースの実行を要求する。なお、リプレース要求データが２次キャッシュ８００に格納されていない場合、リプレース要求データは、リプレース要求アドレスに基づいて、メモリ９００から取得される。【００５６】
このとき、１次キャッシュで実行されるＬ１リプレースに合わせて、２次キャッシュ８００では、Ｌ１タグコピー８２０の更新が実行される。具体的には、リプレース対象アドレスに係るキャッシュタグを格納するＬ１タグコピー８２０のエントリに、リプレース要求アドレスに係るキャッシュタグが上書きされる。【００５７】
このようなＬ１リプレースは、複数のコアで所定の期間内に発生する場合がある。この場合、例えば、発生した複数のＬ１リプレースそれぞれのリプレース対象アドレスが共通するとき、当該共通するリプレース対象アドレスに係る当該２次キャッシュ８００のラインには、所定の期間内に複数のアクセス要求が発生する。【００５８】
ここで、上記Ｌ１リプレースに基づくＬ１タグコピー８２０の更新は、Ｌ１リプレースのアクセス要求に基づくオーダーの発行時、又は、当該オーダーの応答時のタイミングで実行される。また、Ｌ１リプレースに基づいてＬ１タグコピー８２０が個別に更新される場合、上記一括無効化の例とは異なり、リプレース対象アドレスに係るＬ１共有情報８１１は「ＩＮＶ」に更新されるとは限らない。なぜなら、Ｌ１リプレースが発生したコア以外のコアの１次キャッシュに、リプレース対象データが格納されている場合があるからである。そのため、この場合は、Ｌ１タグコピー８２０が参照され、リプレース対象データの共有状態が判定されることで、Ｌ１共有情報８１１の更新が行われる。【００５９】
図７Ａ及び７Ｂは、オーダー発行時にＬ１タグコピー８２０を更新するケースの動作例を示す。この場合、まず、図７Ａに示されるとおり、２次キャッシュ８００では、Ｌ２キャッシュ制御部８４０が、コアからのアクセス要求に応じて、リプレース要求データを格納するラインを検索する。また、Ｌ２キャッシュ制御部８４０は、リプレース対象アドレスに係るキャッシュタグを格納するＬ１タグコピー８２０のエントリを読み出す（ステップ２００１）。次に、Ｌ２キャッシュ制御部８４０は、読み出したエントリのうち、Ｌ１リプレースに基づくアクセス要求を発行したコアのＬ１タグコピーのエントリにおいて、リプレース要求アドレスに係るキャッシュタグを上書きする（ステップ２００２）。そして、読み出されたデータに基づいて、２次キャッシュ８００は、Ｌ１リプレースに基づくアクセス要求を発行したコアに対して、当該Ｌ１リプレースの実行を要求する（ステップ２００３）。【００６０】
Ｌ１リプレースに係る処理が完了すると、図７Ｂに示されるとおり、コアは、２次キャッシュ８００に対して、当該Ｌ１リプレースに係る処理が完了したことを示す通知（完了応答）をする（ステップ２００４）。２次キャッシュ８００では、Ｌ２キャッシュ制御部８４０が、コアからの完了応答に応じて、Ｌ１タグコピー８２０により、リプレース対象データを格納する１次キャッシュのラインを検索する。また、Ｌ２キャッシュ制御部８４０は、当該検索の結果に基づいて、リプレース対象データの共有状態を判定する。そして、Ｌ２キャッシュ制御部８４０は、当該判定結果に基づいて、リプレース対象データの共有状態を示すＬ１共有情報を作成し、リプレース対象アドレスに係るＬ１共有情報８１１に作成したＬ１共有情報を上書きする。これにより、Ｌ２キャッシュ制御部８４０は、Ｌ１共有情報８１１を更新する（ステップ２００５）。【００６１】
図８は、Ｌ１共有情報８１１の状態遷移を例示する。「ＳＨＭ」は、２次キャッシュのラインに格納されたデータが、更新されていない状態（clean状態）で、複数のコア（１次キャッシュ）で共有されている状態（shared modified）を示す。また、「ＣＬＮ」は、２次キャッシュのラインに格納されたデータが、更新されていない状態で、一つのコア（１次キャッシュ）に保持されていることを示す。【００６２】
図８は、コア７００の１次キャッシュ７０１とコア７１０の１次キャッシュ７１１とがアドレスＡに係るデータを格納している場合に、コア７１０でアドレスＡのＬ１リプレースが発生した場面を例示する。この場面では、アドレスＡに係るＬ１共有情報８１１は、「ＣＬＮ」又は「ＳＨＭ」に更新される。具体的には、コア７００以外のコアがアドレスＡに係るデータを保持していない場合、Ｌ１共有情報８１１は、「ＣＬＮ」に更新される。また、コア７００以外のコアがアドレスＡに係るデータを保持している場合、Ｌ１共有情報８１１は、「ＳＨＭ」のままとなる。いずれの場合でも、Ｌ１共有情報８１１を更新するために、Ｌ１タグコピー８２０が参照され、アドレスＡに係るデータの共有状態が判定される。【００６３】
図９Ａ及び９Ｂは、２次キャッシュ８００がコアから完了応答を受けた時にＬ１タグコピー８２０を更新するケースの動作例を示す。この場合、まず、図９Ａに示されるとおり、２次キャッシュ８００では、Ｌ２キャッシュ制御部８４０が、コアからのアクセス要求に応じて、リプレース要求データを格納するラインを検索する。また、Ｌ２キャッシュ制御部８４０は、リプレース対象アドレスに係るキャッシュタグを格納するＬ１タグコピー８２０のエントリが読み出す（ステップ３００１）。次に、読み出されたデータに基づいて、２次キャッシュ８００は、Ｌ１リプレースに基づくアクセス要求を発行したコアに対して、当該Ｌ１リプレースの実行を要求する（ステップ３００２）。【００６４】
Ｌ１リプレースに係る処理が完了すると、図９Ｂに示されるとおり、コアは、２次キャッシュ８００に対して、当該Ｌ１リプレースに係る処理が完了したことを示す通知（完了応答）をする（ステップ３００３）。２次キャッシュ８００では、Ｌ２キャッシュ制御部８４０が、コアからの完了応答に応じて、Ｌ１リプレースに基づくアクセス要求を発行したコアのＬ１タグコピーのエントリにおいて、リプレース要求アドレスに係るキャッシュタグを上書きする（ステップ３００４）。そして、Ｌ２キャッシュ制御部８４０は、ステップ２００５と同様に、Ｌ１タグコピー８２０を参照して、リプレース対象アドレスに係るＬ１共有情報８１１を更新する（ステップ３００５）。【００６５】
特許文献１〜３では、このような同一ラインに対して同時期に個別に発生する複数のアクセス要求の処理方法については記載されていない。また、従来の方法では、このような同一ラインに対して同時期に個別に発生する複数のアクセス要求を同時に処理することはできなかった。従来の方法では、同一ラインに対する、例えば、Ｌ１リプレース等のオーダーの同時発行数は１までという制限が設けられていた。具体的には、Ｌ２キャッシュ制御部８４０には、同一ラインに対するオーダーが同時に複数発生しないように、該当ラインに対するオーダーが完了するまで、後続のアクセス要求をリトライさせる機構が設けられていた。【００６６】
図１０は、従来の方法において、同一のラインに対して複数のＬ１リプレースに係るアクセス要求が発生したケースの動作例を示す。具体的には、図１０は、コア７００及びコア７１０において、同時期に発生したアドレスＡを対象とするＬ１リプレースに基づいて、各コアの１次キャッシュにおける該当ラインが無効化される場面を例示する。【００６７】
まず、コア７００からのアクセス要求に基づいて、アドレスＡが、ロック対象として設定される（ステップ４００１）。このアドレスＡがロック対象として設定されている間、他のコアからのアドレスＡに対するアクセス要求に係る処理の実行は抑止される。そして、２次キャッシュ８００は、コア７００に対して、アドレスＡで特定されるデータの無効化を要求する（ステップ４００２）。【００６８】
コア７００において該当データの無効化が完了すると、コア７００は、２次キャッシュ８００に対して、完了応答を返す（ステップ４００３）。当該完了応答に応じて、２次キャッシュ８００では、アドレスＡのロックが解除される（ステップ４００４）。そして、Ｌ１タグコピー８２０が参照され、アドレスＡに係るＬ１共有情報８１１が更新される（ステップ４００５）。ここでは、アドレスＡに係るデータは、コア７１０、コア７２０、及び、コア７３０により共有されているため、Ｌ１共有情報８１１は、複数のコアで共有されていることを示す「ＳＨＭ」のままである。【００６９】
なお、コア７００のＬ１タグコピー８３０の更新は、Ｌ１リプレースのアクセス要求に基づくオーダーの発行時、及び、当該オーダーの応答時のいずれのタイミングで実行されてもよい。例えば、コア７００のＬ１タグコピー８３０の更新は、ステップ４００１と４００２との間、又は、ステップ４００４とステップ４００５との間において実行される。【００７０】
その後、コア７１０からのアクセス要求に対する処理が実行される。なお、図１０におけるステップ４００６及び４００７は、それぞれ、ステップ４００１及び４００２に対応する。【００７１】
ここで、ステップ４００２の処理とステップ４００７の処理とは、別のコアにおける処理であるため、本来は並列に処理することができる。しかしながら、従来の方式では、このような処理を並列に処理することができなかった。そのため、コア数が増加するほど、このような処理が複数発生する可能性が高まるため、レイテンシが悪化してしまうという問題点があった。【００７２】
一側面では、本発明は、コア数の増加に伴うレイテンシの悪化を改善することを目的とする。
【課題を解決するための手段】
【００７３】
本発明の一側面に係る演算処理装置は、それぞれ演算を行うとともにアクセス要求を出力する複数の演算処理部と、前記複数の演算処理部がそれぞれ演算したデータをキャッシュブロックに保持するキャッシュメモリと、制御対象のキャッシュブロックを特定する制御対象アドレスと制御対象のアクセス要求元の演算処理部を示す制御対象識別情報を保持する保持部と、前記複数の演算処理部のいずれかが発行したアクセス要求に含まれるアクセス対象アドレスと前記アクセス要求を発行した演算処理部を示す要求元識別情報に基づき、前記制御対象アドレスと前記制御対象識別情報により特定されるキャッシュブロックに対するアクセス要求を制御する制御部を有する。
【発明の効果】
【００７４】
一態様によれば、コア数の増加に伴うレイテンシの悪化を改善することができる。
【図面の簡単な説明】
【００７５】
【図１】図１は、従来のマルチコアプロセッサシステムを例示する。
【図２】図２は、一括で実行される無効化処理の動作例を示す。
【図３】図３は、一括で実行される無効化処理の際にリードが保証されるＬ１タグコピーのエントリを例示する。
【図４】図４は、従来のリトライ制御を例示する。
【図５】図５は、一括無効化におけるＬ１タグコピーの更新処理を例示する。
【図６】図６は、従来のリトライ判定に係る論理回路を例示する。
【図７Ａ】図７Ａは、オーダー発行時にＬ１タグコピーを更新するケースの動作を例示する。
【図７Ｂ】図７Ｂは、オーダー発行時にＬ１タグコピーを更新するケースの動作を例示する。
【図８】図８は、Ｌ１共有情報の更新に係る状態遷移を例示する。
【図９Ａ】図９Ａは、オーダー応答時にＬ１タグコピーを更新するケースの動作を例示する。
【図９Ｂ】図９Ｂは、オーダー応答時にＬ１タグコピーを更新するケースの動作を例示する。
【図１０】図１０は、従来の方法において、同一のラインに対して複数のＬ１リプレースに係るアクセス要求が発生したケースの動作を例示する。
【図１１】図１１は、実施の形態に係る装置を例示する。
【図１２】図１２は、実施の形態に係るキャッシュタグのデータ形式を例示する。
【図１３】図１３は、実施の形態に係る制御ブロックを例示する。
【図１４Ａ】図１４Ａは、実施の形態に係る２次キャッシュの動作を例示する。
【図１４Ｂ】図１４Ｂは、実施の形態に係る２次キャッシュの動作を例示する。
【図１４Ｃ】図１４Ｃは、実施の形態に係る２次キャッシュの動作を例示する。
【図１４Ｄ】図１４Ｄは、実施の形態に係る２次キャッシュの動作を例示する。
【図１４Ｅ】図１４Ｅは、実施の形態に係る２次キャッシュの動作を例示する。
【図１４Ｆ】図１４Ｆは、実施の形態に係る２次キャッシュの動作を例示する。
【図１５】図１５は、同時期に４つのＬ１リプレースに係るアクセス要求が発生するケースを例示する。
【図１６】図１６は、Ｌ１タグコピーの読み出し順序によって生じうる問題を例示する。
【図１７】図１７は、図１６により示される問題点に対する実施の形態に係る解決動作を例示する。
【図１８】図１８は、実施の形態におけるＬ２キャッシュ制御部の回路を例示する。
【図１９】図１９は、実施の形態におけるＬ２キャッシュ制御部の動作例を示すフローチャートである。
【図２０】図２０は、実施の形態における、対象のオーダーが最終判定対象であることを検出する回路を例示する。
【図２１】図２１は、実施の形態における、Ｌ１リプレース対象アドレスをロックする動作を例示する。
【図２２】図２２は、実施の形態における、ロックされているアドレスに対するリクエストをリトライする動作を例示する。
【図２３】図２３は、実施の形態におけるリトライ判定回路を例示する。
【図２４】図２４は、実施の形態における最終応答検出回路の動作を例示する。
【図２５】図２５は、実施の形態における最終応答検出回路を例示する。
【発明を実施するための形態】
【００７６】
以下、本発明の一側面に係る実施の形態を、図面に基づいて説明する。ただし、以下で説明する実施の形態は、あらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、本実施の形態に応じた具体的要素が適宜採用されてもよい。なお、以下、本発明の一側面に係る実施の形態を「本実施形態」とも表記する。
【００７７】
また、以下で説明する本実施形態は、２階層のキャッシュメモリを例示する。しかしながら、本発明は、２階層以外のキャッシュメモリに適用されてもよい。３階層以上のキャッシュメモリに適用される場合を考慮し、以下の実施形態における1次キャッシュは「第１のキャッシュメモリ」と称されてもよい。また、以下の実施形態における２次キャッシュは「第２のキャッシュメモリ」と称されてもよい。
【００７８】
なお、本実施形態において登場するデータは、自然言語（日本語等）により説明される。しかしながら、これらのデータは、具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【００７９】
§１  装置例
まず、図１１を用いて、本実施形態に係る装置例を説明する。図１１は、本実施形態に係るマルチコアプロセッサシステムを例示する。図１１に示されるとおり、本実施形態に係るマルチコアプロセッサシステムは、ｍ＋１個のプロセッサコア（１００、１１０、１ｍ０）、２次キャッシュ２００、メモリコントローラ３００、及び、メインメモリ４００と、を備える。なお、ｍは自然数である。本実施形態では、メインメモリ４００以外のユニットは１つの半導体チップ上に設けられる。ただし、本実施形態に係るマルチコアプロセッサシステムは、本発明を限定するものではない。半導体チップと各ユニットの関係は、適宜決定される。
【００８０】
各プロセッサコア（１００、１１０、・・・、１ｍ０）は、それぞれ命令制御部（１０１、１１１、・・・、１ｍ１）、演算実行部（１０２、１１２、・・・、１ｍ２）、１次キャッシュ（１０３、１１３、・・・、１ｍ３）を備える。なお、図１１に示されるとおり、各プロセッサコア（１００、１１０、・・・、１ｍ０）は、それぞれ「第１コア」、「第２コア」、「第ｍ＋１コア」とも称する。また、各プロセッサコア（１００、１１０、・・・、１ｍ０）は、それぞれ演算処理部に相当する。
【００８１】
命令制御部（１０１、１１１、・・・、１ｍ１）は、各プロセッサコア（１００、１１０、・・・、１ｍ０）における命令のデコードと処理順序制御を行う制御部である。具体的には、命令制御部（１０１、１１１、・・・、１ｍ１）は、記憶装置から命令（機械命令）をフェッチする。機械命令を格納する記憶装置は、例えば、メインメモリ４００、２次キャッシュ２００、１次キャッシュ（１０３、１１３、・・・、１ｍ３）である。そして、命令制御部（１０１、１１１、・・・、１ｍ１）は、フェッチした命令を解釈（デコード）する。また、命令制御部（１０１、１１１、・・・、１ｍ１）は、当該命令における処理対象となるデータを記憶装置から取得して、各プロセッサコア（１００、１１０、・・・、１ｍ０）に設けられたレジスタ等に格納する。そして、命令制御部（１０１、１１１、・・・、１ｍ１）は、取得した各データに対する命令の実行を制御する。
【００８２】
演算実行部（１０２、１１２、・・・、１ｍ２）は、演算処理を行う。具体的には、各演算実行部（１０２、１１２、・・・、１ｍ２）は、レジスタ等に読み込まれたデータに対して、各命令制御部（１０１、１１１、・・・、１ｍ１）によって解釈された命令に対応する演算の処理を実行する。
【００８３】
１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００は、命令制御部（１０１、１１１、・・・、１ｍ１）及び演算実行部（１０２、１１２、・・・、１ｍ２）で処理されるデータを一時的に保持するキャッシュメモリである。
【００８４】
１次キャッシュ（１０３、１１３、・・・、１ｍ３）はそれぞれ、各プロセッサコア（１００、１１０、・・・、１ｍ０）専用のキャッシュメモリである。また、１次キャッシュ（１０３、１１３、・・・、１ｍ３）は、命令（IF）キャッシュとオペランド（OP）キャッシュとが分離された分離型キャッシュメモリである。命令キャッシュは、命令アクセスにより要求されるデータを格納する。オペランドキャッシュは、データアクセスにより要求されるデータを格納する。なお、オペランドキャッシュは、データキャッシュとも呼ばれる。このように格納するデータの種別によりキャッシュを分離することで、分離しない統合型キャッシュと比べて、キャッシュの処理速度の高速化を図ることが可能となる。ただし、本発明で利用されるキャッシュメモリの構造は、当該分離型キャッシュメモリに限定される訳ではない。
【００８５】
一方、２次キャッシュ２００は、各プロセッサコア（１００、１１０、・・・、１ｍ０）により共有されるキャッシュメモリである。２次キャッシュ２００は、命令とオペランドを区別せずに格納する統合型キャッシュメモリである。なお、処理能力を向上させるため、当該２次キャッシュ２００は、バンク分けされていてもよい。
【００８６】
ここで、１次キャッシュ（１０３、１１３、・・・、１ｍ３）は、２次キャッシュ２００に比して、高速にデータを処理できるが、データを格納する容量は小さい。各プロセッサコア（１００、１１０、・・・、１ｍ０）は、処理速度及び容量の異なる各１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００を使用することにより、メインメモリ４００との処理速度差を埋める。
【００８７】
なお、本実施形態では、１次キャッシュ（１０３、１１３、・・・、１ｍ３）に格納されるデータは、２次キャッシュ２００にも格納される。つまり、本実施形態で使用されるキャッシュは、プロセッサコアに近い上位のキャッシュメモリに格納されるデータは下位のキャッシュメモリに含まれるという関係が成立するインクルージョンキャッシュである。
【００８８】
例えば、２次キャッシュ２００は、プロセッサコアから要求されたデータ（アドレスブロック）をメモリから取得すると、１次キャッシュに取得したデータを転送すると同時に、当該データを自身に登録する。また、２次キャッシュ２００は、１次キャッシュに登録されたデータが無効化、又は、２次キャッシュ２００に書き戻された後に、自身に登録された当該データをメモリに書き戻す。このような動作により、１次キャッシュに格納されるデータは、２次キャッシュ２００に含まれる。
【００８９】
インクルージョンキャッシュは、キャッシュの他の構造に比べて、キャッシュタグの構造や制御が簡単であるという利点を持つ。ただし、本発明において使用されるキャッシュメモリはインクルージョンキャッシュに限定されない。
【００９０】
更に、１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００のデータ格納構造には、セットアソシアティブ方式が採用される。上述のとおり、１次キャッシュ（１０３、１１３、・・・、１ｍ３）のラインは、Ｌ１インデックス及びＬ１ウェイによって表現される。また、２次キャッシュ２００のラインは、Ｌ２インデックス及びＬ２ウェイによって表現される。なお、１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００のラインのサイズは同じであるとする。
【００９１】
図１１に示されるとおり、１次キャッシュ１０３は、Ｌ１キャッシュ制御部１０４、Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６を備える。Ｌ１キャッシュ制御部１０４は、アドレス変換部１０４ａとリクエスト処理部１０４ｂとを含む。また、Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６は、それぞれ、Ｌ１タグ（１０５ａ、１０６ａ）及びＬ１データ（１０５ｂ、１０６ｂ）を含む。なお、本実施形態では、各１次キャッシュ（１１３、・・・、１ｍ３）は、１次キャッシュ１０３と同じように形成される。
【００９２】
アドレス変換部１０４ａは、命令制御部１０１によりフェッチされる命令により指定される論理アドレスを物理アドレスに変換する。当該アドレスの変換には、ＴＬＢ（Translation Lookaside Buffer）又はハッシュ表等が用いられてもよい。
【００９３】
また、リクエスト処理部１０４ｂは、命令制御部１０１により制御される命令に基づくキャッシュのデータ操作を処理する。例えば、リクエスト処理部１０４ｂは、命令制御部１０１からのデータ要求に対応するデータをＬ１命令キャッシュ１０５、又は、Ｌ１オペランドキャッシュ１０６から検索する。該当するデータが検索された場合は、リクエスト処理部１０４ｂは、検索されたデータを命令制御部１０１に返す。また、該当するデータが検索されない場合は、リクエスト処理部１０４ｂは、キャッシュミスヒットの結果を命令制御部１０１に返す。なお、リクエスト処理部１０４ｂは、上述したＬ１リプレースに基づく１次キャッシュ内におけるデータ操作についても処理する。また、リクエスト処理部１０４ｂは、２次キャッシュ２００からの要求によって、当該要求により指定されるデータを２次キャッシュ２００に書き戻す処理も実行する。
【００９４】
Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６は、１次キャッシュ１０３のデータを格納する記憶部である。Ｌ１命令キャッシュ１０５は、命令フェッチの際にアクセスされる機械命令を格納する。また、Ｌ１オペランドキャッシュ１０６は、機械命令のオペランド部で指定されるデータを格納する。
【００９５】
Ｌ１タグ（１０５ａ、１０６ａ）はそれぞれ、Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６のキャッシュタグを格納する。当該キャッシュタグとＬ１インデックスによって、ラインに格納されたデータのアドレスが特定される。また、Ｌ１データ（１０５ｂ、１０６ｂ）は、それぞれ、Ｌ１インデックスとＬ１タグ（１０５ａ、１０６ａ）によって特定されるアドレスに対応するデータを格納する。
【００９６】
また、図１１に示されるとおり、２次キャッシュ２００は、Ｌ２キャッシュ制御部２１０及びＬ２キャッシュデータ部２２０を備える。Ｌ２キャッシュ制御部２１０は、リクエスト処理部２１１、アドレスロック制御部２１２、最終応答検出部２１３、及び、リトライ制御部２１４を備える。また、Ｌ２キャッシュデータ部２２０は、Ｌ２タグ２２１、Ｌ２データ２２２、及び、Ｌ１タグコピー２２３を含む。
【００９７】
リクエスト処理部２１１は、各プロセッサコア（１００、１１０、・・・、１ｍ０）からのアクセス要求に係る処理を実行する。また、リクエスト処理部２１１は、実行した処理に基づいて、各プロセッサコア（１００、１１０、・・・、１ｍ０）に対してアクセス要求を発行する。本実施形態に係る２次キャッシュ２００は１つ以上のパイプライン（不図示）を備える。リクエスト処理部２１１は、当該パイプラインにより、各プロセッサコア（１００、１１０、・・・、１ｍ０）からのアクセス要求を並列に処理することができる。なお、本実施形態では、プロセッサコア１００からの当該アクセス要求は、命令制御部１０１によって発行される。
【００９８】
当該アクセス要求には、例えば、１次キャッシュ内においてキャッシュミスヒットが生じた場合に発行されるデータ要求が含まれる。例えば、命令制御部１０１は、命令フェッチやデータアクセスに際して、１次キャッシュ１０３からデータを取得しようとする。このとき、対象のデータが１次キャッシュ１０３内に格納されていなければ、キャッシュミスヒットが起こる。キャッシュミスヒットが起こると、命令制御部１０１は、２次キャッシュ２００から、当該対象のデータを取得しようとする。上記データ要求は、この際に発行される、コアから２次キャッシュ２００に対してのアクセス要求である。
【００９９】
また、アクセス要求には、例えば、Ｌ１リプレースに基づくアクセス要求が含まれる。例えば、命令制御部１０１は、１次キャッシュ１０３内に格納されていないデータを２次キャッシュ２００又はメインメモリ４００から取得する。この際、命令制御部１０１は、リクエスト処理部１０４ｂに対して、取得したデータを１次キャッシュ１０３内に格納することを要求する。このときにＬ１リプレースが生じたとする。上述のとおり、Ｌ１リプレースが生じると、Ｌ１リプレースが生じた１次キャッシュ内、及び、２次キャッシュ内でデータの処理が実行される。Ｌ１リプレースに基づくアクセス要求は、このときに、２次キャッシュ内でのデータ処理の実行のために、命令制御部１０１によって発行されるアクセス要求である。
【０１００】
なお、例えば、命令フェッチに際してこれらの処理が実行される場合は、取得されたデータは、Ｌ１命令キャッシュ１０５に格納される。また、例えば、機械命令のオペランド部に係るデータへのアクセスに際してこれらの処理が実行される場合は、取得されたデータは、Ｌ１オペランドキャッシュ１０６に格納される。
【０１０１】
リクエスト処理部２１１は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００との間でコヒーレンシを維持した上で、これらのアクセス要求に係る処理を実行する。リクエスト処理部２１１は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００との間でキャッシュのコヒーレンシを制御する。このとき、リクエスト処理部２１１は、プロセッサコア（１００、１１０、・・・、１ｍ０）に対して、キャッシュのコヒーレンシを維持するための、１次キャッシュに対する該当ラインの無効化や書き戻しの処理の要求をする。なお、コアからのアクセス要求について、以降、当該アクセス要求に係る処理の命令を「オーダー」とも表記する。また、アクセス要求は、当該アクセス要求の対象となるデータの取得などの関連する処理を含めて、処理要求と称してもよい。
【０１０２】
アドレスロック制御部２１２は、パイプライン上を流れるコアからのアクセス要求について、アクセス要求の対象となるアドレスと該アクセス要求の発行元であるコアとを示す情報により特定されるキャッシュブロックをロック対象として設定する。そして、アドレスロック制御部２１２は、当該ロック対象キャッシュブロックに対する後続のアクセス要求の実行を管理する。
【０１０３】
なお、アドレスロック制御部２１２は、パイプライン上を流れるプロセッサコアからのアクセス要求について、アクセス要求の対象となるアドレスとアクセス要求の発行元であるプロセッサコアとを示す情報を保持部（不図示）に登録する。当該保持部は、２次キャッシュ２００内に設けられる。これにより、アドレスロック制御部２１２は、当該情報により示されるアドレス及びプロセッサコアにより特定されるキャッシュブロックをロック対象として設定し、当該キャッシュブロックに対する後続のアクセス要求に係る処理の実行を取り消す。
【０１０４】
なお、アドレスロック制御部２１２により保持される当該情報は、アクセス要求の対象となるアドレスと当該アクセス要求を発行したプロセッサコアとを識別可能な形式の情報であれば如何なる形式であってよい。アクセス要求の対象となるアドレスは、制御対象のキャッシュブロックを特定する制御対象アドレスに相当する。また、アクセス要求の発行元であるプロセッサコアを示す情報は、制御対象のアクセス要求元の演算処理部を示す制御対象識別情報に相当する。
【０１０５】
例えば、当該情報には、アクセス要求の対象となるアドレスを示すアドレス情報と、当該アクセス要求を発行したプロセッサコアを示すコア識別情報とが含まれてもよい。ここで、コア識別情報は、例えば、プロセッサコアを識別するためのコア番号等である。また、保持部に登録される情報には、指定されるアドレスに格納されるデータの種別を示すデータ種別情報が含まれてもよい。データ種別情報とは、対象のデータが機械命令に係るデータであるのか、又は、機械命令のオペランド部により指定されるデータであるのかを示す情報である。なお、機械命令に係るデータは、命令キャッシュに格納されるデータである。また、機械命令のオペランド部により指定されるデータは、オペランドキャッシュに格納されるデータである。
【０１０６】
また、例えば、アクセス要求の対象となるアドレスと該アクセス要求の発行元であるコアとを示す情報は、プロセッサコア毎に格納されたアドレス情報であってもよい。この場合、アドレス情報がプロセッサコア毎に格納されているため、プロセッサコアを示すコア識別情報が当該情報に含まれていなくても、当該情報によりロック対象キャッシュブロックに係るプロセッサコアを識別することができる。
【０１０７】
アドレスロック制御部２１２は、処理の実行が取り消された後続のアクセス要求をパイプラインに再投入する。また、アドレスロック制御部２１２は、先行するアクセス要求に基づいて要求された処理が完了したことを通知する完了応答に応じて、当該先行するアクセス要求に基づくロック対象キャッシュブロックの設定を解除する。
【０１０８】
これにより、同一のキャッシュブロックに対するアクセス要求がパイプライン上を流れる場合、先行のアクセス要求に係る処理が完了するまでの間、後続のアクセス要求に係る処理の実行は、取り消され、再試行させられる。
【０１０９】
つまり、プロセッサコアからのアクセス要求に係る処理を実行する際、アドレスロック制御部２１２は、当該実行に係るアクセス要求の対象となるキャッシュブロックをロックする。当該キャッシュブロックがロックされている間、アドレスロック制御部２１２は、ロックされているキャッシュブロックに対する他のアクセス要求に係る処理の実行を取り消し、当該他のアクセス要求をパイプラインに再投入し続ける。
【０１１０】
そして、プロセッサコアからのアクセス要求に係る処理の実行が完了すると、Ｌ２キャッシュ制御部２１０（アドレスロック制御部２１２）は、当該アクセス要求に基づいて要求された処理が完了したことを示す通知（完了応答）を受信する。当該完了応答は、例えば、アクセス要求を発行したプロセッサコアから送信される。
【０１１１】
アドレスロック制御部２１２は、当該完了応答に応じて、当該完了応答がなされたアクセス要求に基づくロックを解除する。ロックの解除は、解除する対象となるデータ（情報）の無効化によって行われる。データの無効化は、データの削除によって実現されてもよいし、データが無効であることを示すフラグにより実現されてもよい。
【０１１２】
キャッシュブロックのロックが解除されると、当該ロックが解除されたキャッシュブロックに対するアクセス要求に係る処理の実行が可能となる。すなわち、パイプラインに再投入され続けた他のアクセス要求の処理が可能となる。よって、パイプラインに再投入される他のアクセス要求に係る処理は、当該他のアクセス要求に係る処理の対象となるキャッシュブロックのロックが解除された後に、実行される。
【０１１３】
最終応答検出部２１３は、同一のアドレスで特定されるキャッシュブロックに対して並行して発行された複数のアクセス要求に係る処理の完了応答のうち、最終の完了応答を判定する。最終応答検出部２１３は、最終の完了応答が判定可能であれば、どのように実現されてもよい。最終応答検出部２１３の一例については、後述する。
【０１１４】
なお、並行して発行された複数のアクセス要求とは、当該アクセス要求に係るオーダーの発行から完了までの期間が重なる関係にある複数のアクセス要求である。なお、当該複数のアクセス要求に含まれるアクセス要求は、当該複数のアクセス要求に含まれる他のアクセス要求のいずれかのアクセス要求と、オーダーの発行から完了までの期間が重なっていればよい。
【０１１５】
例えば、並行して発行された複数のアクセス要求とは、全てのコアに対してブロードキャストされる、該当ラインの無効化を要求する複数のアクセス要求である。
【０１１６】
また、例えば、並行して発行された複数のアクセス要求とは、該当ラインを有する複数のプロセッサコアに対して一括して発行される、該当ラインの無効化を要求する複数のアクセス要求である。
【０１１７】
更に、例えば、並行して発行された複数のアクセス要求とは、それぞれ、複数のプロセッサコアで同時期に個別に発生する同一のキャッシュブロックに対するアクセス要求である。プロセッサコアで同時期に個別に発生する同一のキャッシュブロックに対するアクセス要求とは、例えば、Ｌ１リプレースに基づくアクセス要求である。本実施形態では、ロック対象のキャッシュブロックを特定する情報として、アドレス情報と、アクセス要求の発行元であるプロセッサコアを識別するためのコア番号とが設定される。そのため、別のプロセッサコアで個別に発生した同一のキャッシュブロックに対するアクセス要求に係る処理は、実行を抑止されず、並列に実行することが可能である。
【０１１８】
リトライ制御部２１４は、前記最終の完了応答に応じて発行されるアクセス要求の対象となるアドレスと同一のアドレスに対するアクセス要求がパイプライン上に存在する場合、前記最終の完了応答に応じて発行されるアクセス要求の実行を取り消す。また、リトライ制御部２１４は、処理の実行が取り消された当該最終の完了応答に応じて発行されたアクセス要求をパイプラインに再投入する。これにより、リトライ制御部２１４は、処理の実行が取り消された当該最終の完了応答に応じて発行されたアクセス要求に係る処理の実行を再試行する。なお、詳細については後述する。後述する本実施形態の制御例では、当該最終の完了応答に応じて発行されるアクセス要求に係る処理は、Ｌ１共有情報の更新処理である。
【０１１９】
Ｌ２キャッシュ制御部２１０は、これらのユニットにより、プロセッサコアが発行するアクセス要求に係る処理を制御する。本実施形態に係るシステムは、このＬ２キャッシュ制御部２１０による制御により、プロセッサコア数の増加に伴うレイテンシの悪化を改善する。なお、詳細な動作については後述する。
【０１２０】
Ｌ２キャッシュデータ部２２０は、２次キャッシュ２００のデータを格納する記憶部である。Ｌ２タグ２２１は、２次キャッシュ２００のキャッシュタグを格納する。当該キャッシュタグとＬ２インデックスによって、２次キャッシュ２００内のラインに格納されたデータのアドレスが特定される。また、Ｌ２データ２２２は、Ｌ２インデックスとＬ２タグ２２１によって特定されるアドレスに対応するデータを格納する。更に、Ｌ１タグコピー２２３は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）のキャッシュタグのコピーを格納する。Ｌ１タグコピー２２３は、例えば、Ｌ１タグ（１０５ａ、１０６ａ）のコピーを格納する。
【０１２１】
なお、図１１に示されるとおり、本実施形態に係るマルチコアプロセッサシステムは、メモリコントローラ３００及びメインメモリ４００を備える。メモリコントローラ３００は、メインメモリ４００におけるデータの書き込み及び読み出し等を処理する。例えば、メモリコントローラ３００は、リクエスト処理部２１１により実行されるデータの書き戻しに応じて、当該書き戻し対象のデータをメインメモリ４００に書き込む。また、メモリコントローラ３００は、リクエスト処理部２１１からのデータ要求に応じて、当該要求に係るデータをメインメモリ４００から読み出す。なお、メインメモリ４００は、本実施形態に係るマルチコアプロセッサシステムで利用される主記憶装置である。
【０１２２】
§２  データ形式
次に、図１２を用いて、本実施形態で扱われるキャッシュタグのデータ形式について説明する。図１２は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００において格納されるキャッシュタグのデータ形式を例示する。なお、図１２は、１つのラインについてのキャッシュタグのデータ形式を例示する。
【０１２３】
図１２に示される例では、Ｌ１タグ（１０５ａ、１０６ａ）の各エントリは、物理アドレス上位ビットＢ１とステータス５００とを格納する領域を有する。物理アドレス上位ビットＢ１は、該当ラインの検索に用いられる。また、ステータス５００は、当該キャッシュタグに対応するラインに格納されたデータが有効か否か、データが更新されたか否か等を示す情報である。このようなＬ１タグにより、１次キャッシュに格納されたデータの検索が行われる。
【０１２４】
具体的には、まず、リクエスト処理部１０４ｂは、Ｌ１命令キャッシュ１０５又はＬ１オペランドキャッシュ１０６内から、命令制御部１０１により与えられる論理アドレスの下位ビットと一致するＬ１インデックスが与えられたセットを検索する。命令フェッチの段階における動作であれば、リクエスト処理部１０４ｂは、Ｌ１命令キャッシュ１０５から該当するセットを検索する。また、機械命令のオペランド部において指定されるデータを取得する処理における動作であれば、リクエスト処理部１０４ｂは、Ｌ１オペランドキャッシュ１０６から該当するセットを検索する。
【０１２５】
次に、リクエスト処理部１０４ｂは、該当するセットの中から、命令制御部１０１により与えられた論理アドレスにより指定されるデータが格納されたラインを検索する。この検索は、物理アドレスを用いて行われる。そのため、当該検索の前までに、命令制御部１０１により与えられた論理アドレスは、アドレス変換部１０４ａによって、物理アドレスに変換される。
【０１２６】
つまり、１次キャッシュ１０３では、インデックスが論理アドレス（仮想アドレス）で与えられ、キャッシュタグが実アドレス（物理アドレス）で与えられる。このような方式は、ＶＩＰＴ（Virtually Indexed Physically Tagged）方式と呼ばれる。
【０１２７】
コアから与えられるアドレスは論理アドレスである。そのため、インデックスが物理アドレスで与えられるＰＩＰＴ（Physically Indexed Physically Tagged）方式では、該当ラインの検索は、論理アドレスから物理アドレスへの変換処理をした後に実行される。これに対して、ＶＩＰＴ方式によると、インデックスの特定と、論理アドレスから物理アドレスへの変換とが並列に処理することが可能となる。よって、ＶＩＰＴ方式は、ＰＩＰＴ方式に比べてレイテンシが少ない。
【０１２８】
また、キャッシュタグも論理アドレスで与えられるＶＩＶＴ（Virtually Indexed Virtually Tagged）方式では、異なる物理アドレスが同一の仮想アドレスに割り当てられる問題（ホモニム問題）が生じる。ＶＩＰＴ方式では、キャッシュタグに物理アドレスが用いられるため、当該ホモニム問題を検知することができる。
【０１２９】
これらの利点により、本実施形態で使用されるキャッシュには、ＶＩＰＴ方式が採用される。ただし、本発明で使用されるキャッシュは、ＶＩＰＴ方式に限定される訳ではない。なお、１次キャッシュ１０３において論理アドレスが実アドレスに変換されるため、本実施形態では、１次キャッシュ１０３より下位のキャッシュにおいて用いられるアドレスは、実アドレスである。
【０１３０】
リクエスト処理部１０４ｂは、アドレス変換部１０４ａによって変換された物理アドレスの上位ビットとＬ１タグの各エントリの物理アドレス上位ビットＢ１とを比較する。アドレス変換部１０４ａによって変換された物理アドレスの上位ビットと一致する物理アドレス上位ビットＢ１を含むＬ１タグのエントリに対応するラインが、命令制御部１０１により与えられた論理アドレスにより指定されたデータを格納するラインである。よって、リクエスト処理部１０４ｂは、与えられた物理アドレスの上位ビットと一致する物理アドレス上位ビットＢ１を含むＬ１タグのエントリを、検索したセットに含まれるラインに対応するＬ１タグの中から検索する。
【０１３１】
最後に、検索の結果、該当するＬ１タグのエントリが見つかった場合、リクエスト処理部１０４ｂは、該当するＬ１タグのエントリに対応するラインに格納されたデータを取得し、取得したデータを命令制御部１０１に渡す。他方、該当するＬ１タグのエントリが見つからなかった場合、リクエスト処理部１０４ｂは、キャッシュミスヒットと判定し、１次キャッシュ１０３内には指定されたデータは格納されていないことを命令制御部１０１に通知する。本実施形態では、このように１次キャッシュに格納されたデータの検索が行われる。
【０１３２】
なお、Ｌ１タグのエントリは、コア毎、データの種別毎、インデックス毎、及び、ウェイ毎に用意される。図１１では、Ｌ１タグのエントリが、コア毎、インデックス毎、及び、データの種別毎に用意されることが示されている。また、本実施形態における１次キャッシュ（１０３、１１３、・・・、１ｍ３）のデータ格納構造には、セットアソシアティブ方式が採用されているため、Ｌ１タグのエントリは、ウェイ毎に用意される。
【０１３３】
また、図１２に示される例では、Ｌ２タグ２２１のエントリは、物理アドレス上位ビットＢ２、ステータス５０１、論理アドレス下位ビットＡ１、及び、Ｌ１共有情報５０２を格納する領域を有する。
【０１３４】
物理アドレス上位ビットＢ２は、２次キャッシュ２００における該当ラインの検索に用いられる。ステータス５０１は、２次キャッシュ２００において、当該キャッシュタグに対応するラインに格納されたデータが有効か否か、データが更新されたか否か等を示す情報である。
【０１３５】
また、論理アドレス下位ビットＡ１は、例えば、シノニム問題を解消するために用いられる。本実施形態では、１次キャッシュにおいてＶＩＰＴ方式が採用されている。そのため、異なる論理アドレスが同一の物理アドレスに割り当てられるシノニム問題が発生する可能性がある。本実施形態では、論理アドレス下位ビットＡ１を参照することで、当該シノニム問題が生じているか否かを検知することができる。
【０１３６】
Ｌ１共有情報５０２は、当該キャッシュタグに対応するラインに格納されたデータについての１次キャッシュ（１０３、１１３、・・・、１ｍ３）における共有状態を示す情報である（例えば、特許文献２及び３を参照）。Ｌ１共有情報５０２を格納する領域は、Ｌ２タグ２２１の物量を削減するため、Ｌ１タグコピー２２３を格納する領域の代わりに設けられる。このようなＬ２タグ２２１により、２次キャッシュ２００に格納されたデータの検索が行われる。
【０１３７】
データの検索については、１次キャッシュ１０３における検索処理とほぼ同様に説明することができる。具体的には、リクエスト処理部２１１は、まず、コアから与えられるアクセス要求に含まれる物理アドレスの下位ビットと一致するＬ２インデックスが与えられたセットを検索する。なお、以下、コアからのアクセス要求に含まれる処理対象のアドレスを「リクエストアドレス」とも表記する。
【０１３８】
次に、リクエスト処理部２１１は、該当するセットに含まれるラインのうち、コアから与えられたリクエストアドレスにより指定されるデータが格納されたラインを検索する。具体的には、リクエスト処理部２１１は、コアから与えられるリクエストアドレスの上位ビットと一致する物理アドレス上位ビットＢ２を含むＬ２タグ２２１のエントリを、検索したセットに含まれるラインに対応するＬ２タグ２２１の中から検索する。
【０１３９】
最後に、検索の結果、該当するＬ２タグ２２１のエントリが見つかった場合、リクエスト処理部２１１は、該当するＬ２タグ２２１のエントリに対応するラインに格納されたデータを取得し、アクセス要求を発行したコアに取得したデータを渡す。他方、該当するＬ２タグ２２１のエントリが見つからなかった場合、リクエスト処理部２１１は、キャッシュミスヒットと判定する。そして、リクエスト処理部２１１は、メモリコントローラ３００に対して、リクエストアドレスにより指定されるデータを要求する。メモリコントローラ３００は、リクエスト処理部２１１からの当該要求に応じて、メインメモリ４００から該当するデータを取得し、取得したデータを２次キャッシュ２００に渡す。
【０１４０】
なお、本実施形態では、２次キャッシュのデータ格納構造にはセットアソシアティブ方式が採用されているため、Ｌ２タグ２２１のエントリは、インデックス毎、及び、ウェイ毎に用意される。
【０１４１】
また、１次キャッシュ１０３のデータ格納容量よりも、２次キャッシュ２００のデータ格納容量の方が大きい。そして、本実施形態では、１次キャッシュ１０３のラインサイズと２次キャッシュ２００のラインサイズは同じである。そのため、通常では、１次キャッシュ１０３のセットの数よりも２次キャッシュ２００のセットの数の方が多くなる。この場合、Ｌ１インデックスのビット長よりもＬ２インデックスのビット長の方が長くなる。よって、この場合、物理アドレス上位ビットＢ１のビット長よりも物理アドレス上位ビットＢ２のビット長の方が短くなる。ただし、それぞれのキャッシュ容量やウェイ数等によっては、物理アドレス上位ビットＢ１のビット長の方が物理アドレス上位ビットＢ２のビット長よりも短くなる場合も考えられるし、同じになる場合も考えられる。これらの関係は、適宜選択される。
【０１４２】
また、図１２に示される例では、Ｌ１タグコピー２２３の各エントリは、インデックス差分５０３、Ｌ２ウェイ５０４、及び、ステータス５０５を格納する領域を有する。
【０１４３】
インデックス差分５０３は、論理アドレス下位ビットＡ１と物理アドレス下位ビットＢ３との差分である。また、Ｌ２ウェイ５０４は、当該Ｌ１タグコピー２２３に対応する２次キャッシュのラインのウェイを特定するための情報を格納する。本実施形態では、１次キャッシュに格納されるデータは２次キャッシュに格納されるため、Ｌ２ウェイ５０４は特定される。このインデックス差分５０３及びＬ２ウェイ５０４により、Ｌ１タグコピー２２３のエントリとＬ２タグ２２１のエントリとが対応付けられる（特許文献３を参照）。なお、ステータス５０５は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）において、当該キャッシュタグに対応するラインに格納されたデータが有効か否か、データが更新されたか否か等を示す情報である。
【０１４４】
なお、このようなＬ１タグコピー２２３によれば、２次キャッシュ２００は、Ｌ２タグ２２１の検索結果を用いて、Ｌ１タグコピー２２３の該当エントリの検索を実行することができる。
【０１４５】
具体的には、リクエスト処理部２１１は、２次キャッシュ２００から該当するデータを検索するために、Ｌ２タグ２２１を参照する。２次キャッシュ２００内に該当するデータが存在する場合、当該データの物理アドレスを用いたＬ２タグ２２１の検索により、該当するデータを格納するラインに対応するＬ２タグ２２１内のエントリが検索される。この検索により、検索対象のデータに係るＬ２インデックスとＬ２ウェイを特定することができる。検索対象のデータに係るＬ１インデックスは、Ｌ２インデックスの一部、又は、Ｌ２タグ２２１内の論理アドレス下位ビットＡ１より、特定される。よって、Ｌ２タグ２２１の検索により、検索対象のデータに係るＬ１インデックス、Ｌ２インデックス、及び、Ｌ２ウェイが特定される。
【０１４６】
ここで、Ｌ１タグコピー２２３のエントリは、Ｌ１インデックス、インデックス差分５０３、及び、Ｌ２ウェイ５０４によって、特定することができる。インデックス差分５０３は、Ｌ１インデックス（論理アドレス下位ビットＡ１）とＬ２インデックス（物理アドレス下位ビットＢ３）との差分である。よって、２次キャッシュ２００は、Ｌ２タグ２２１の検索により特定されたＬ１インデックス、Ｌ２インデックス、及び、Ｌ２ウェイにより、検索対象のデータに対応するＬ１タグコピー２２３のエントリを特定することができる。
【０１４７】
なお、検索対象のデータに係るＬ１インデックスは、Ｌ２インデックスに含まれる場合がある。この場合、Ｌ２インデックスからＬ１インデックスが特定されてもよい。また、コアからのアクセス要求にＬ１インデックスに係る情報が含まれる場合がある。この場合、コアからのアクセス要求に含まれる情報からＬ１インデックスが特定されてもよい。なお、コアからのアクセス要求に含まれるＬ１インデックスに係る情報とは、例えば、論理アドレスそのものである。
【０１４８】
なお、本実施形態のキャッシュメモリは、インクルージョンキャッシュであるため、２次キャッシュ２００内に該当するデータが存在しない場合は、当該データは、１次キャッシュ内にも存在しない。そのため、２次キャッシュ２００内に存在しないデータについて、Ｌ１タグコピー２２３内のエントリが検索されることはない。
【０１４９】
また、論理アドレスと物理アドレスの対応関係によっては、論理アドレス下位ビットＡ１が物理アドレス下位ビットＢ３に含まれる場合がある。この場合、インデックス差分５０３のビット長は、物理アドレス下位ビットＢ３のビット長と論理アドレス下位ビットＡ１のビット長の差と等しくなる。
【０１５０】
また、インデックス差分５０３とＬ２ウェイ５０４と合わせたビット長の方が物理アドレス上位ビットＢ１のビット長よりも短い場合、Ｌ１タグをそのままコピーする場合に比べて、Ｌ１タグコピー２２３の物量が削減される。
【０１５１】
このＬ１タグコピー２２３は、主に、１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００との間でコヒーレンシを維持するために用いられる（特許文献１〜３を参照）。なお、Ｌ１タグコピー２２３は、Ｌ１タグと同様の理由により、コア毎、データの種別毎、及び、ウェイ毎に用意される。
【０１５２】
また、Ｌ１タグコピー２２３を参照すれば、各コアの１次キャッシュが保持するデータを判定することができるため、Ｌ１タグコピー２２３を用いて、Ｌ１共有情報５０２を更新することができる。
【０１５３】
例えば、Ｌ２キャッシュ制御部２１０は、更新対象のＬ１共有情報５０２を含むＬ２タグ２２１のエントリに格納されたキャッシュタグにより、更新対象のＬ１共有情報５０２により共有状態が示されるデータ（アドレス）を特定する。そして、Ｌ２キャッシュ制御部２１０は、Ｌ１タグコピー２２３を参照することで、対象のデータを保持する１次キャッシュを特定し、１次キャッシュにおける当該対象のデータの共有状態を判定する。最後に、Ｌ２キャッシュ制御部２１０は、Ｌ１タグコピー２２３を参照することで行った判定の結果に基づいて、Ｌ１共有情報５０２を更新する。このようにして、Ｌ２キャッシュ制御部２１０は、Ｌ１共有情報５０２を更新することができる。
【０１５４】
§３  制御例
次に、図１３〜１７を用いて、本実施形態に係るＬ２キャッシュ制御部２１０の制御例を説明する。
【０１５５】
図１３は、本実施形態に係るＬ２キャッシュ制御部２１０の制御ブロックを例示する。コアからアクセス要求を受信すると、２次キャッシュ２００では、Ｌ２タグ２２１の該当エントリ、Ｌ１タグコピー２２３の該当エントリ、及び、該当ラインそれぞれに格納されたデータが読み出される。読み出されたデータに基づいて、アドレスロック制御部２１２は、コアから受信したアクセス要求に係る処理の対象となるキャッシュブロックがロックされているか否かを判定する。
【０１５６】
なお、アドレスロック制御部２１２は、コアから要求される処理に係るオーダーが発行されるときに、当該オーダーの対象となるキャッシュブロックをロックする。ロックされるキャッシュブロックは、アドレス、コア番号、データの種別、Ｌ２インデックス、Ｌ２ウェイ、Ｌ１インデックス、及び、Ｌ１ウェイ等により特定される。本実施形態では、ロックされたキャッシュブロックを示す情報として、処理の対象となるアドレス及びコア番号が用いられる。
【０１５７】
アドレスロック制御部２１２は、アクセス要求に係る処理の対象となるキャッシュブロックがロックされていると判定した場合、当該アクセス要求に係る処理の実行を取り消し、当該処理の実行をリトライさせるため、当該アクセス要求をパイプラインに再投入する。
【０１５８】
他方、アドレスロック制御部２１２が、アクセス要求に係る処理の対象となるキャッシュブロックがロックされていないと判定した場合、当該アクセス要求に係る処理は、リクエスト処理部２１１によって、実行される。そして、リクエスト処理部２１１は、実行した処理に基づいて、当該処理の対象となるコアに対してアクセス要求を発行する。
【０１５９】
ここで、例えば、２次キャッシュ２００は、それぞれ互いに異なるコアから、２次キャッシュ２００上の同一のラインを対象とするＬ１リプレースに係るアクセス要求を受信したとする。この場合、各アクセス要求の発行元は異なるコアであるため、各アクセス要求に基づいてロックされる対象であるキャッシュブロックは異なる。よって、先行する処理によって対象のキャッシュブロックがロックされていなければ、各アクセス要求は、互いにその実行を取り消されることなく、並列に処理される。
【０１６０】
このように、アドレスロック制御部２１２は、複数のコアのいずれかが発行したアクセス要求に含まれるアクセス対象アドレスと当該アクセス要求を発行したコアを示す要求元識別情報とに基づき、前記保持部に保持されている情報によって特定されるキャッシュブロックに対するアクセス要求を制御する。なお、本実施形態では、アクセス要求に含まれるリクエストアドレスが、アクセス対象アドレスに相当する。また、アクセス要求に含まれるコア番号が、要求元識別情報に相当する。
【０１６１】
なお、各アクセス要求を処理する過程において、各アクセス要求に関連するＬ１タグコピー２２３のエントリに格納されるデータは更新される。Ｌ１タグコピー２２３の更新は、オーダー発行時、及び、オーダー応答時のいずれのタイミングで実行されてもよい。
【０１６２】
コアに対して発行されたアクセス要求について、コアにおいて当該アクセス要求に係る処理が完了すると、コアは、２次キャッシュ２００に対して、当該アクセス要求に係る処理が完了したこと通知する（完了応答）。当該完了応答に応じて、アドレスロック制御部２１２は、当該完了応答に係るアクセス要求に基づいて設定したキャッシュブロックのロックを解除する。
【０１６３】
また、コアからの完了応答について、最終応答検出部２１３は、同一のアドレスで特定されるラインに対して同時期に並行して発行されたアクセス要求に係る処理の完了応答のうち、最終の完了応答を検出する。例えば、最終応答検出部２１３は、それぞれ互いに異なるコアにおいて同時期に発行された、２次キャッシュ２００上の同一のラインを対象とするＬ１リプレースに関するアクセス要求に係る処理の完了応答のうち、最終の完了応答を検出する。
【０１６４】
最終の完了応答が検出されると、本実施形態に係る２次キャッシュ２００では、Ｌ２タグ２２１の該当エントリに含まれるＬ１共有情報５０２の更新が実行される。このＬ１共有情報５０２の更新に係るアクセス要求について、リトライ判定部２１４は、当該アクセス要求に係る処理が実行可能か否かを判定する。
【０１６５】
例えば、リトライ判定部２１４は、更新されるＬ１共有情報５０２を格納するＬ２タグ２２１のエントリに対応するラインを対象とするアクセス要求に係る処理の完了応答がパイプライン上に先行して流れているか否かを判定する。リトライ判定部２１４は、先行する完了応答が存在する場合、Ｌ１共有情報５０２の更新処理は実行不可能であると判定し、当該更新処理の実行を取り消し、当該更新処理に係るアクセス要求をパイプラインに再投入する。他方、リトライ判定部２１４は、先行する完了応答が存在しない場合、Ｌ１共有情報５０２の更新処理は実行可能であると判定し、当該更新処理の実行を許可する。
【０１６６】
なお、本実施形態では、最終の完了応答以外の完了応答に対しては、Ｌ１共有情報５０２の更新処理は実行されない。これらの完了応答は、同一のアドレスに対するアクセス要求に係るオーダーに対する完了応答である。つまり、各完了応答に係るＬ１共有情報５０２は共通である。そのため、最終の完了応答以外の完了応答に対するＬ１共有情報５０２の更新処理は無駄になる。よって、本実施形態では、最終の完了応答以外の完了応答に対しては、Ｌ１共有情報５０２の更新処理は実行されない。
【０１６７】
本実施形態に係るＬ２キャッシュ制御部２１０は、このような制御方法によって、コアからのアクセス要求を処理する。なお、本実施形態では、処理されるアクセス要求は、上述の一括無効化のようなアクセス要求であってもよいし、同時期に個別に発生するアクセス要求であってもよい。本実施形態に係るＬ２キャッシュ制御部２１０は、いずれのアクセス要求に係る処理も制御することができる。
【０１６８】
図１４Ａ〜１４Ｆは、本実施形態に係るＬ２キャッシュ制御部２１０の動作を例示する。図１４Ａ〜１４Ｆは、コア数（ｍ＋１）が４であるケースを例示する。また、図１４Ａ〜１４Ｆは、全てのコアから同時期に発行されたＬ１リプレースに係るアクセス要求に対して、２次キャッシュ２００が第１コアに対する無効化処理のアクセス要求を発行し、更に、第２コア〜第４コアに対する無効化処理のアクセス要求を並列で発行したケースを例示する。
【０１６９】
なお、図１４Ａ〜１４Ｆにより示される例では、２次キャッシュ２００は、第１コア、第２コア、及び、第４コアからのＬ１リプレースに係るアクセス要求については、各コアに対するアクセス要求を発行するオーダーを発行した時にＬ１タグコピーを更新する。また、２次キャッシュ２００は、第３コアからのＬ１リプレースに係るアクセス要求については、第３コアに対するアクセス要求を発行した後、第３コアから当該アクセス要求に係るオーダーに対する完了応答が返ってきた時にＬ１タグコピーを更新する。なお、本実施形態に係る２次キャッシュ２００は、Ｌ１タグコピーをいずれのタイミングで更新してもよい。例えば、第１コア、第２コア、及び、第４コアに係るＬ１タグコピーは、各コアからの完了応答に応じて更新されてもよい。また、第３コアに係るＬ１タグコピーは、第３コアに対するアクセス要求の発行に係るオーダーを発行した時に更新されてもよい。
【０１７０】
まず、図１４Ａにより示される、初期状態では、全てのコアの１次キャッシュにおいて、アドレスＡに係るデータが保持されている。そのため、図１４Ａに示されるとおり、各コアのＬ１タグコピーの該当エントリには、アドレスＡに関するキャッシュタグが格納されている。図１４Ａの「ＶＡＬ（Ａ）」は、１次キャッシュにおいて、アドレスＡに係るデータが有効に保持されていることを示す。また、図１４Ａで示される初期状態では、ロック対象として登録されているキャッシュブロックは存在しない。更に、アドレスＡに係るデータを格納する２次キャッシュ２００のラインのキャッシュタグを格納するＬ２タグ２２１のエントリには、Ｌ１共有情報５０２として、当該ラインに格納されたデータが複数のコアで共有されていることを示す「ＳＨＭ」が格納されている。
【０１７１】
ここで、各コアで同時期にアドレスＡに対してＬ１リプレースの要求が発行されたとする。このとき、２次キャッシュ２００は、各コアからＬ１リプレースに係るアクセス要求を受信する。これに応じて、２次キャッシュ２００が、第１コアのアクセス要求を処理したとする。図１４Ｂは、このときにおける２次キャッシュ２００の動作を例示する。
【０１７２】
このとき、２次キャッシュ２００のアドレスロック制御部２１２は、第１コアからのアクセス要求に応じて、当該アクセス要求の対象となるキャッシュブロックをロックする（ステップ５００１）。具体的には、アドレスロック制御部２１２は、ロック対象のキャッシュブロックを示す情報として、Ｌ１リプレースの対象であるアドレスＡを示すアドレス情報と、当該Ｌ１リプレースに係るアクセス要求を発行した第１コアを識別するためのコア番号とを含む情報を保持する。図１４Ｂの「Ａ（第１コア）」は、当該ロック対象キャッシュブロックを特定する情報の一例を示す。
【０１７３】
そして、２次キャッシュ２００のリクエスト処理部２１１は、第１コアに対してアドレスＡに係るデータを無効化させるためのアクセス要求を発行する（ステップ５００２）。第１コアでは、当該アクセス要求に基づいて、アドレスＡに係るデータの無効化を実行する。
【０１７４】
また、２次キャッシュ２００は、第１コアからのＬ１リプレースに係るアクセス要求について、当該第１コアに対するアクセス要求を発行した時にＬ１タグコピーを更新する。そのため、２次キャッシュ２００のＬ２キャッシュ制御部２１０は、第１コアのＬ１タグコピーを更新する（ステップ５００３）。具体的には、Ｌ２キャッシュ制御部２１０は、アドレスＡに係るデータを格納する第１コアの１次キャッシュのラインに対応するＬ１タグコピー２２３のエントリに格納される情報を「ＶＡＬ（Ａ）」から「ＩＮＶ」に更新する。
【０１７５】
次に、２次キャッシュ２００は、第２コア、第３コア、及び、第４コアのアクセス要求を並列に処理する。図１４Ｃは、このときにおける２次キャッシュ２００の動作を例示する。
【０１７６】
このとき、アドレスロック制御部２１２は、第２コア、第３コア、及び、第４コアからのアクセス要求に応じて、これらのアクセス要求の対象となるキャッシュブロックをロックする（ステップ５００４）。図１４Ｃにおける「Ａ（第２コア）」、「Ａ（第３コア）」、及び、「Ａ（第４コア）」は、このときにロックされるキャッシュブロックに対するアクセス元を示す。ロック対象として登録されたキャッシュブロックに対する各アクセス要求は、アドレスＡを対象とするアクセス要求である。しかしながら、各アクセス要求を発行したコアが異なるため、当該各アクセス要求は、並列に処理することが可能である。そのため、本実施形態では、各アクセス要求は、それぞれ互いに干渉せず、それぞれ並列に処理される。
【０１７７】
そして、リクエスト処理部２１１は、第２コア、第３コア、及び、第４コアに対しても、第１コアと同様に、アドレスＡに係るデータを無効化させるためのアクセス要求をそれぞれ発行する（ステップ５００５）。
【０１７８】
また、２次キャッシュ２００は、第１コアと同様に、第２コア及び第４コアそれぞれからのＬ１リプレースに係るアクセス要求について、各コアに対するアクセス要求を発行した時にＬ１タグコピーを更新する。そのため、２次キャッシュ２００のＬ２キャッシュ制御部２１０は、第２コア及び第４コアのＬ１タグコピーを更新する（ステップ５００６）。当該更新は、ステップ５００３の処理と同様に説明される。
【０１７９】
なお、２次キャッシュ２００は、第３コアからのＬ１リプレースに係るアクセス要求については、第３コアに対するアクセス要求を発行した後、第３コアから当該アクセス要求に係るオーダーに対する完了応答が返ってきた時にＬ１タグコピーを更新する。そのため、この時点では、第３コアのＬ１タグコピーは更新されない。
【０１８０】
次に、各コアで無効化処理が完了すると、２次キャッシュ２００は、各コアから、無効化処理が完了したことを示す通知（完了応答）を受信する。図１４Ｄ及びＥは、このときにおける２次キャッシュ２００の動作を例示する。より具体的には、図１４Ｄは、第１コアからの完了応答が２次キャッシュ２００に到達し、第１コア以外の他のコアからの完了応答がまだ２次キャッシュ２００に到達していない場合における２次キャッシュ２００の動作を例示する。また、図１４Ｅは、第３コアからの完了応答が２次キャッシュ２００に到達し、第４コアからの完了応答がまだ２次キャッシュ２００に到達していない場合における２次キャッシュ２００の動作を例示する。
【０１８１】
２次キャッシュ２００が、第１コアからの完了応答を受信すると（ステップ５００７）、アドレスロック制御部２１２は、当該完了応答に応じて、当該完了応答に対応するオーダーに基づいて設定されたロックを解除する（ステップ５００８）。
【０１８２】
また、最終応答検出部２１３は、当該第１コアからの完了応答が最終の完了応答であるか否かを判定する。この時点では、第１コアを除く他のコアからの未到達な完了応答が存在するため、当該完了応答は、最終の完了応答ではない。そのため、当該第１コアからの完了応答は、最終応答検出部２１３により、最終の完了応答ではないと判定される。
【０１８３】
ここで、アドレスＡに対して、複数の処理が並列に実行されるため、アドレスＡに係るＬ１共有情報５０２は、各処理に応じて更新されなくても、複数の処理の実行が完了した後に更新されればよい。そのため、本実施形態では、最終の完了応答に応じて、Ｌ１共有情報５０２の更新が実行される。よって、Ｌ１共有情報５０２の更新は、当該第１コアからの完了応答に応じては、実行されない。
【０１８４】
なお、２次キャッシュ２００は、第２コアからの完了応答に対しても、第１コアからの完了応答に対する処理と同様の処理を実行する。図１４Ｅにより示される状態は、２次キャッシュ２００が、第１コア及び第２コアからの完了応答に対する処理を実行した後、第３コアからの完了応答を受信した状態を例示する。
【０１８５】
図１４Ｅに示されるとおり、２次キャッシュ２００は、第３コアからの完了応答を受信すると（ステップ５００９）、アドレスロック制御部２１２は、当該完了応答に応じて、当該完了応答に対応するオーダーに基づいて設定されたロックを解除する（ステップ５０１０）。
【０１８６】
また、第３コアに対するアクセス要求についてのＬ１タグコピーの更新処理は、第３コアから当該アクセス要求に係るオーダーに対する完了応答が返ってきた時に実行される。そのため、Ｌ２キャッシュ制御部２１０は、第３コアのＬ１タグコピーの更新処理の実行を開始する（ステップ５０１１）。
【０１８７】
なお、これらの処理の際、上記第１コアからの完了応答に対する処理と同様、最終応答完了検出部２１３は、当該第３コアからの完了応答が最終の完了応答であるか否かを判定する。この時点では、第４コアからの完了応答が未到達であるため、第３コアからの完了応答は、最終の完了応答ではない。そのため、上記第１コアからの完了応答に対する処理と同様に、最終応答検出部２１３は、当該第３コアからの完了応答を最終の完了応答ではないと判定する。また、上記第１コアからの完了応答に対する処理と同様に、Ｌ１共有情報５０２の更新は、当該第３コアからの完了応答に応じては、実行されない。
【０１８８】
最後に、２次キャッシュ２００は、最終の完了応答である第４コアからの完了応答を受信する。図１４Ｆは、当該第４コアからの完了応答を受信した際の２次キャッシュ２００の動作を例示する。
【０１８９】
２次キャッシュ２００が、第４コアからの完了応答を受信すると（ステップ５０１２）、アドレスロック制御部２１２は、当該完了応答に応じて、当該完了応答に対応するオーダーに基づいて設定されたロックを解除する（ステップ５０１３）。
【０１９０】
更に、Ｌ２キャッシュ制御部２１０の最終応答検出部２１３は、当該第４コアからの完了応答が最終の完了応答であるか否かを判定する。図１４Ｆに示されるとおり、当該第４コアからの完了応答は、アドレスＡを対象とするオーダーについての最終の完了応答である。そのため、最終応答検出部２１３は、当該第４コアからの完了応答を最終の完了応答であると判定する。
【０１９１】
当該判定に応じて、Ｌ２キャッシュ制御部２１０は、アドレスＡに係るＬ１共有情報５０２の更新処理の要求をパイプラインに投入する。このとき、リトライ制御部２１４は、当該Ｌ１共有情報５０２の更新処理よりも先行するアドレスＡに係るＬ１タグコピー２２３の更新処理がパイプライン上に存在するか否かを判定する。
【０１９２】
リトライ制御部２１４は、先行するＬ１タグコピー２２３の更新処理がパイプライン上に存在すると判定した場合、Ｌ１共有情報５０２の更新処理を取り消し、リトライさせる。例えば、上記ステップ５０１１に係る第３コアのＬ１タグコピーの更新処理が実行中である場合、リトライ制御部２１４は、Ｌ１共有情報５０２の更新処理を取り消し、リトライさせる。他方、先行するＬ１タグコピー２２３の更新処理がパイプライン上に存在しないとリトライ制御部２１４が判定した場合、Ｌ１タグコピー２２３が参照され、Ｌ１共有情報５０２の更新処理が実行される（ステップ５０１４）。
【０１９３】
本実施形態に係る２次キャッシュ２００は、このように動作する。なお、上記各処理は、適宜、並列に処理されてもよいし、処理順序が入れ替わってもよい。例えば、ステップ５００１の処理とステップ５００２の処理とは、並列に処理されてもよいし、処理順序が入れ替わってもよい。
【０１９４】
図１４Ａ〜１４Ｆにより示されるように動作することで、本実施形態に係る２次キャッシュ２００は、オーダー応答時にＬ１タグコピー２２３を更新するタイプの処理の場合に生じうる問題点を解消している。当該問題点を図１５及び１６を用いて説明する。
【０１９５】
図１５は、第１コア〜第４コアそれぞれにおいてアドレスＡに係るデータを格納する１次キャッシュのラインを対象としてＬ１リプレースが発生したケースを例示する。なお、図１５により示される例では、図１４Ａ〜１４Ｆにより示される例と同様に、第３コアについては、第３コアからの完了応答に応じて、第３コアに係るＬ１タグコピー２２３が更新される。また、第１コア、第２コア、及び、第４コアについては、各コアに対するアクセス要求の発行時に、各コアに係るＬ１タグコピー２２３が更新される。
【０１９６】
図１５に示される例では、Ｌ１リプレースにより、各コアでは、アドレスＡに係るデータがそれぞれアドレスＢ、Ｃ、Ｄ、Ｅに係るデータに置き換えられる。ここで、図１５の「Ｌ１−ＲＰＬ（Ａ）＃１」は、第１コアに対してＬ１リプレースに係るアクセス要求を２次キャッシュ２００が発行したタイミングを示す。また、「＃１応答」は、当該Ｌ１リプレースに係るアクセス要求に係るオーダーついての完了応答を２次キャッシュ２００が第１コアから受信したタイミングを示す。
【０１９７】
この例では、第３コアに係るＬ１タグコピー２２３の更新とアドレスＡに係るＬ１共有情報５０２の更新とが同時期に実行される。この場合に、第３コアに係るＬ１タグコピー２２３の更新が完了する前に、アドレスＡに係るＬ１共有情報５０２の更新のためのＬ１タグコピー２２３の参照が起きる可能性がある。言い換えると、図１４Ａ〜１４Ｆにより示される例において、ステップ５０１１における第３コアのＬ１タグコピーの更新処理が完了する前に、ステップ５０１４のＬ１共有情報の更新処理におけるＬ１タグコピー２２３の参照が実行される可能性がある。
【０１９８】
図１６は、第３コアに係るＬ１タグコピー２２３の更新が完了する前に、アドレスＡに係るＬ１共有情報５０２の更新のためのＬ１タグコピー２２３の参照が起きたケースの動作を例示する。
【０１９９】
図１６に示される例では、第３コアに係るＬ１タグコピー２２３の更新処理における、第３コアに係るＬ１タグコピー２２３の該当エントリに対するデータの書き込みは、ステージ３で実行される。これに対して、Ｌ１共有情報５０２の更新のためのＬ１タグコピー２２３の参照は、ステージ２で実行される。そのため、Ｌ１共有情報５０２の更新に、第３コアの最新の状態が反映されない。また、第３コアに係るＬ１タグコピー２２３の更新処理、及び、Ｌ１共有情報５０２の更新処理は、ともにアドレスＡに関する処理である。そのため、第３コアの最新の状態が反映されていないことにより、Ｌ１共有情報５０２は、誤った状態を示す情報で更新されてしまう可能性がある。オーダー応答時にＬ１タグコピー２２３を更新するタイプの処理が存在する場合、このような問題が発生し得る。
【０２００】
なお、当該問題は、同時期に個別に発生する同一アドレスに対する各処理を１つずつ実行する場合には生じない。なぜなら、各処理は１つずつ実行されるため、図１６で示されるような並列で処理が実行される状態にはならないからである。つまり、本実施形態では、同時期に個別に発生する同一アドレスに対する複数の処理を並列に処理するため、このような問題が生じうる。ただし、本実施形態に係る２次キャッシュ２００は、リトライ制御部２１４の動作により、当該問題を解決している。
【０２０１】
図１７は、本実施形態に係る２次キャッシュ２００の動作を例示する。本実施形態では、図１６と同様に、ステージ２においてＬ１タグコピー２２３の参照が実行され、ステージ３においてＬ１タグコピーの更新処理（上書き処理）が実行される。
【０２０２】
ここで、図１６の例とは異なり、本実施形態では、リトライ制御部２１４により、ステージ４で実行されるＬ１共有情報５０２の更新処理（上書き処理）は、取り消される。なぜなら、第３コアに係るＬ１タグコピー２２３の更新処理がパイプライン上に存在し、リトライ制御部２１４はこのような場合にＬ１共有情報５０２の更新処理を取り消して、当該更新処理をリトライさせるからである。
【０２０３】
このリトライ制御部２１４の動作により、本実施形態では、ステージ４において再度、Ｌ１共有情報５０２のためのＬ１タグコピー２２３の参照が実行される。そして、この時点では、Ｌ１タグコピー２２３の更新処理が完了している。そのため、本実施形態では、図１６で示されるような問題は解決されている。
【０２０４】
§４  回路例
次に、図１８〜２５を用いて、本実施形態に係る回路例を示す。図１８は、本実施形態に係るＬ２キャッシュ制御部２１０の回路を例示する。図１８に示されるとおり、本実施形態に係るＬ２キャッシュ制御部２１０は、リクエスト処理部２２１、アドレスロック機構６０２、最終応答検出回路６０３、及び、リトライ判定回路６０４を備える。なお、アドレスロック機構６０２は、アドレスロック制御部２１２に相当する。最終応答検出回路６０３は、最終応答検出部２１３に相当する。リトライ判定回路６０４は、リトライ制御部２１４に相当する。各回路の詳細については、後述する。
【０２０５】
なお、本実施形態に係る最終応答検出回路６０３は、アドレスロック機構のヒット情報を用いて、対象の完了応答が最終の完了応答であるか否かを判定する。ただし、最終応答検出回路６０３は、対象の完了応答が最終の完了応答であるか否かを判定することができる回路であれば、どのような回路であってもよい。例えば、最終応答検出回路６０３は、カウンタによって実現されてもよい。この場合、最終応答検出回路６０３のカウンタには、コアに対して同時期に発行した、同一のアドレスに対するオーダーの数がセットされる。そして、完了応答がある度に、カウンタの値を１ずつ減算する。このとき、最終応答検出回路６０３は、カウンタの値が０になった時の完了応答を最終の完了応答と判定し、それ以外の完了応答は最終の完了応答ではないと判定する。
【０２０６】
図１９は、本実施形態に係るＬ２キャッシュ制御部２１０の動作例を示す。図１９により示される動作例では、コアからのデータが、２次キャッシュ２００のパイプラインに投入され、Ｌ２キャッシュ制御部２１０によって取り出されたところから、処理が開始している。
【０２０７】
ステップ６００１では、Ｌ２キャッシュ制御部２１０によって、コアからの処理対象のデータが完了応答を示すデータであるか否かが判定される。処理対象のデータが完了応答を示すデータでなければ（ステップ６００１の「Ｎｏ」）、次のステップ６００２に処理は進む。他方、処理対象のデータが完了応答を示すデータであれば（ステップ６００１の「Ｙｅｓ」）、次のステップ６００５に処理は進む。
【０２０８】
図２０は、処理対象のデータが完了応答を示すデータであるか否かを判定する回路を例示する。本実施形態では、Ｌ２キャッシュ制御部２１０は、パイプライン上のデコードステージにおける出力を元に、当該判定を行う。パイプラインのデコードステージに存在するデータのオペコードが完了応答を示すものである場合、当該データは、最終の完了応答であるか否かを判定する対象のデータである。本ステップは、処理対象のデータがこのような判定の対象であるか否かを識別するための処理である。
【０２０９】
なお、以下では、最終の完了応答であるか否かを判定する対象のことを「最終判定対象」と表記する。図２０により示される回路は、デコーダ６０５の出力に基づいて、パイプラインのデコードステージに存在するデータが、最終判定対象となるデータか否かを判定する。すなわち、本実施形態では、完了応答を示すデータ以外のデータが最終判定対象となるように、当該デコーダ６０５の設定を変更してもよい。この場合、ステップ６００１では、コアからの処理対象のデータが最終判定対象であるか否かが判定される。
【０２１０】
また、図２０における「MOP_MULTI」の値は、コアからの処理対象のデータが、完了応答を示すデータ等、最終判定対象のデータである場合、「１」となる。それ以外の場合、「MOP_MULTI」の値は「０」となる。
【０２１１】
図１９に戻り、処理対象のデータが完了応答を示すデータではない場合（ステップ６００１の「Ｎｏ」）、次のステップ６００２が実行される。ステップ６００２では、アドレスロック機構６０２において、アクセス要求の対象となるキャッシュブロックとロック対象キャッシュブロックとが照合される。この処理は、アクセス要求の対象となるキャッシュブロックがロックされているか否かを判定するロックチェックの処理に該当する。
【０２１２】
図２１及び２２を用いて、アドレスロック機構６０２によるロックチェックを説明する。図２１は、アドレスロック機構６０２が、Ｌ１リプレース対象アドレスをロックする動作を例示する。図２１に示されるとおり、アドレスロック機構６０２は、ロック対象を示すデータを保持するための保持部６２０を含む。
【０２１３】
図２１により示される例では、Ｌ２キャッシュ制御部２１０は、リプレース要求アドレスＢを含むアクセス要求を第１コアから受信する。Ｌ２キャッシュ制御部２１０は、当該アクセス要求に含まれるデータに基づいて、第１コアのリプレース対象に係るラインに対応するＬ１タグコピー２２３のエントリに格納されたデータを読み出す。なお、読み出されるデータは、リプレース対象アドレスに相当するデータである。
【０２１４】
アドレスロック機構６０２は、ロック対象キャッシュブロックを示す情報として、読み出されたデータから特定可能なリプレース対象アドレスＡと第１コアとによって特定されるキャッシュブロックを示す情報を保持部６２０に登録する。なお、リプレース対象の読み出しが実行された後、Ｌ２キャッシュ制御部２１０は、当該読み出したエントリに、リプレース要求アドレスＢに係るデータを上書きする。これにより、Ｌ１タグコピー２２３は、更新される。
【０２１５】
図２２は、アドレスロック機構６０２が、ロックされているアドレスに対するリクエストをリトライする動作を例示する。アドレスロック機構６０２は、図２２に示されるとおり、コアからのリクエストの対象となるキャッシュブロックと、保持部６２０に保持されているロック対象キャッシュブロックとを照合することにより、コアからのリクエストの対象となるキャッシュブロックがロックされているか否かを判定する。
【０２１６】
コアからのリクエストの対象となるキャッシュブロックを示す情報と一致、又は、対応する情報が、ロック対象キャッシュブロックを示す情報として、保持部６２０に登録されている場合、アドレスロック機構６０２は、当該リクエストの対象となるキャッシュブロックがロックされていると判定する。そして、アドレスロック機構６０２は、当該リクエストに係る処理の実行を取り消し、当該リクエストをパイプラインに再投入することで、当該リクエストに係る処理の実行を再試行させる。
【０２１７】
このようにして、アドレスロック機構６０２は、コアからのリクエストの対象となるキャッシュブロックのロックチェックを行う。なお、図２１及び２２に示される保持部６２０は、ロックに係るリクエストの対象となるアドレスを示すアドレス情報と、当該ロックに係るリクエストを発行したコアを識別するためのコア番号とを保持する。上述のとおり、保持部６２０には、これら以外の情報が登録されてもよい。
【０２１８】
図１９に戻り、アクセス要求の対象となるキャッシュブロックとロック対象キャッシュブロックとの照合が実行されると、次に、ステップ６００３では、当該照合において、アクセス要求の対象となるキャッシュブロックがヒットしたか否かが判定される。ヒットした場合、アクセス要求の対象となるキャッシュブロックはロックされているため、図２２により例示されるアドレスロック機構６０２の動作により、当該アクセス要求はリトライされる。他方、ヒットしなかった場合、アクセス要求の対象となるキャッシュブロックはロックされていないため、処理は、次のステップ６００４に進む。
【０２１９】
ステップ６００４では、リクエスト処理部２１１によって、コアからのアクセス要求に係る処理が実行される。そして、リクエスト処理部２１１は、コアに対して、実行した処理に基づくアクセス要求を発行する。発行されるアクセス要求は、例えば、アドレスＡに係るデータの無効化処理の要求である。
【０２２０】
一方、処理対象のデータが完了応答を示すデータである場合（ステップ６００１の「Ｙｅｓ」）、当該処理対象のデータは、完了応答を示すデータである。このとき、次のステップ６００５では、リトライ判定回路６０４によって、処理対象である完了応答と同一のアドレスを対象とした先行する完了応答がパイプライン上に存在するか否か判定される。
【０２２１】
図２３は、本実施形態に係るリトライ判定回路６０４の論理回路を例示する。本実施形態に係るリトライ判定回路６０４は、図２３に示される論理回路の出力が「１」となる場合に先行する完了応答が存在すると判定する（ステップ６００５の「Ｙｅｓ」）。
【０２２２】
具体的には、処理対象のデータが最終判定対象であり、かつ、パイプライン上の先行するステージに存在するリクエストが、リトライ制御対象オペコードを含み、処理対象のデータと同一のアドレスを対象とする場合、リトライ判定回路６０４の出力が「１」となる。
【０２２３】
なお、リトライ制御対象オペコードとは、当該リトライ判定回路６０４のリトライ判定の対象となるオペコードのことである。このようなオペコードは任意に設定されてもよい。本実施形態に係るリトライ制御対象オペコードには、完了応答を示すオペコードが含まれる。また、リトライ制御対象オペコードには、完了応答を示すオペコードに代えて、最終の完了応答を示すオペコードが含まれてもよい。
【０２２４】
ここで、本実施形態に係るパイプラインでは、同一のアドレスを対象とする複数のリクエストが隣り合うステージに配置されないような制限が設けられている。そのため、図２３に示される論理回路では、パイプライン上の先行するステージとして、２サイクル毎のステージが挙げられている。
【０２２５】
また、本実施形態に係るリトライ判定回路６０４は、６サイクル前までのステージについてリトライ制御の対象としている。リトライ制御の対象となるステージは、パイプラインのステージ数、及び、オーダーが実行されるステージの位置等の要因により、変わりうる。そのため、リトライ制御の対象となるステージは、これらの要因に基づいて、適宜選択される。本実施形態では、６サイクル前までのステージがリトライ制御の対象となっている。
【０２２６】
このようなリトライ判定回路６０４により、処理対象である完了応答と同一のアドレスを対象とした先行する完了応答がパイプライン上に存在するか否か判定される。
【０２２７】
先行する完了応答が存在する場合（ステップ６００５の「Ｙｅｓ」）、リトライ判定回路６０４は、処理対象である完了応答に基づいて発行されるオーダーを取り消す。そして、リトライ判定回路６０４は、当該完了応答を示すデータをパイプラインに再投入し、当該完了応答に基づいて発行されるオーダーの処理をリトライする。
【０２２８】
他方、先行する完了応答が存在しない場合（ステップ６００５の「Ｎｏ」）、処理は、次のステップ６００６に進む。
【０２２９】
ステップ６００６では、処理対象である完了応答に対応するアクセス要求に基づいて設定されたロックが解除される。具体的には、アドレスロック機構６０２は、保持部６２０における、コアからの完了応答が対象とするキャッシュブロックと一致するロック対象キャッシュブロックに係るデータを無効化する。データの無効化は、保持部６２０が保持するデータを削除することで実現されてもよいし、当該データを格納する領域に上書きを許可することで実現されてもよい。当該データの無効化は、いかなる方法で実現されてもよい。これにより、処理の完了したアクセス要求に係るロックが解除される。
【０２３０】
最後に、ステップ６００７では、最終応答検出回路６０３が、処理対象である完了応答が最終の完了応答であるか否かを判定する。処理対象である完了応答が最終の完了応答でないならば（ステップ６００７の「Ｎｏ」）、Ｌ１共有情報の更新に係る処理は実行されない。他方、処理対象である完了応答が最終の完了応答であれば（ステップ６００７の「Ｙｅｓ」）、Ｌ１共有情報の更新に係る処理が実行される。
【０２３１】
図２４は、最終応答検出回路６０３の動作を例示する。図２４に示されるとおり、本実施形態に係る最終応答検出回路６０３は、アドレスロック機構６０２のヒット情報を用いて、処理対象である完了応答が最終の完了応答であるか否かを判定することで、最終の完了応答を検出する。なお、当該ヒット情報は、完了応答に係るアドレスと一致するアクセス要求の発行元を示す。図２４により示される例では、ヒット情報は、「Ａ（第１コア）」及び「Ａ（第２コア）」を示す。
【０２３２】
図２５は、最終応答検出回路６０３の論理回路を例示する。なお、図２５に示される最終応答検出回路６０３の出力「MOP_MULTI_REMAIN」の値は、処理対象の完了応答が最終の完了応答である場合、「０」となる。他方、処理対象の完了応答が最終の完了応答ではない場合、「MOP_MULTI_REMAIN」の値は「１」となる。
【０２３３】
図２５に示される最終応答検出回路６０３は、１段目として、各コアに対して３つのＮＡＮＤゲートを備える。そして、最終応答検出回路６０３は、２段目として、各コアに対して、当該３つのＮＡＮＤゲートの出力と各コアに対するアドレスロック機構６０２の出力（ヒット情報）との論理積をとるＡＮＤゲートを備える。さらに、最終応答検出回路６０３は、３段目として、各コアに対する２段目のＡＮＤゲートの論理和をとるＯＲゲートを備える。
【０２３４】
図２５に示されるとおり、いずれかのコアに対する２段目のＡＮＤゲートの出力が「１」となった場合、処理対象の完了応答は最終の完了応答ではないと判定される。２段目のＡＮＤゲートには、１段目の３つのＮＡＮＤゲートの出力と各コアに対するアドレスロック機構６０２の出力とが入力される。
【０２３５】
アドレスロック機構６０２の出力は、処理対象の完了応答に係るアドレスと一致するアクセス要求の発行元として登録されているコアに対して、「１」となる。例えば、図２４に示される状態では、処理対象の完了応答に係るアドレスＡについて、第１コアに対するヒット情報の出力と第２コアに対するヒット情報の出力が「１」となる。
【０２３６】
ここで、１つ目のＮＡＮＤゲートには、処理対象が最終判定対象であるか否かを示す値と、処理対象の完了応答を発行したコアが自身であるか否かを示す値とが入力される。従って、処理対象の完了応答が自身のコアにより発行された完了応答である場合、１つ目のＮＡＮＤゲートの出力が「０」となる。
【０２３７】
例えば、第１コアが発行した完了応答が処理対象の完了応答である場面を考えるとする。また、アドレスロック機構６０２には、処理対象の完了応答に係るアドレスを対象とするアクセス要求の発行元として、第１コアが登録されており、第１コア以外のコアは登録されていないとする。すなわち、アドレスロック機構６０２には、処理対象の完了応答に係るアドレスと第１コアとを示す情報が登録されており、処理対象の完了応答に係るアドレスと第１コア以外のコアとを示す情報は登録されていないとする。
【０２３８】
この場合、処理対象は完了応答であり、かつ、当該完了応答を発行したコアは第１コアであるため、第１コアに係る当該１つ目のＮＡＮＤゲートの出力は「０」となる。また、アドレスロック機構６０２には、処理対象の完了応答に係るアドレスと第１コア以外のコアとを示す情報は登録されていないため、第１コア以外の他のコアに係るアドレスロック機構６０２の出力は「０」である。よって、この場合、処理対象の完了応答は、最終の完了応答であると判定される。
【０２３９】
すなわち、この１つ目のＮＡＮＤゲートは、処理対象の完了応答を発行したコアに係るロックを最終の完了応答であるか否かの判定から除外するためのゲートである。コアからの完了応答が最終の完了応答であるならば、典型的には、当該完了応答を発行したコアがロックされており、その他のコアはロックされていない。１つ目のＮＡＮＤゲートは、この状態に対応するためのゲートである。
【０２４０】
また、２つ目のＮＡＮＤゲートと３つ目のＮＡＮＤゲートは、それぞれ、先行するオーダーについてのゲートである。対象とするパイプラインの位置が異なる以外、２つ目のＮＡＮＤゲートと３つ目のＮＡＮＤゲートは、同様のゲートである。
【０２４１】
これらのＮＡＮＤゲートには、パイプライン上の先行するステージに存在するリクエストが最終判定対象であるか否かを示す値と、当該リクエストの対象となるアドレスと処理対象の完了応答に係るアドレスとが一致するか否かを示す値とが入力される。すなわち、２つ目及び３つ目のＮＡＮＤゲートの出力は、処理対象の完了応答と同一のアドレスに関する完了応答がパイプライン上の先行するステージに存在する場合、「０」となる。
【０２４２】
例えば、これらのＮＡＮＤゲートの出力が「０」であり、アドレスロック機構６０２の出力が「１」である状態は、ロック解除の更新が処理されておらず、当該ロック解除に係る完了応答がパイプライン上の先行するステージに存在している状態を示す。すなわち、２つ目及び３つ目のＮＡＮＤゲートは、処理対象の完了応答が最終の完了応答であるか否かの判定に、未更新であるロック解除を反映するためのゲートである。
【０２４３】
アドレスロック機構６０２は、これらのゲートによって、最終の完了応答を検出する。具体的には、アドレスロック機構６０２は、処理対象の完了応答が最終の完了応答である場合に「０」を出力し、そうでない場合に「１」を出力する。
【０２４４】
なお、図２５により示される最終応答検出回路６０３では、上記リトライ判定回路６０４と同様に理由により、パイプライン上の先行するステージとして、２サイクル毎のステージが挙げられている。また、上記リトライ判定回路６０４と同様に理由により、最終応答検出の対象となるステージは、変わりうる。本実施形態では、４サイクル前までのステージが最終応答検出の対象となっている。
【０２４５】
なお、最終応答検出回路６０３は、対象の完了応答が最終の完了応答であることが検出できれば、どのように実現されてもよい。例えば、最終応答検出回路６０３は、アドレスロック機構６０２においてヒットしたキャッシュブロックの数（ヒット数）が１である場合に、処理対象の完了応答を最終の完了応答と判定してもよい。この場合、パイプラインのステップ数によっては、ロック解除が実行されていない先行の完了応答がパイプライン上に存在するときがある。最終の完了応答を正確に判定するためには、最終応答検出回路６０３は、このような状態を検出する回路を備えればよい。たとえば、図２４に示される先行の完了応答（オーダー）に関するＮＡＮＤゲートは、上述のとおり、このような状態を検出することができる。
【０２４６】
このような最終応答検出回路６０３によって、処理対象である完了応答が最終の完了応答であるか否かが判定される。そして、処理対象の完了応答が最終の完了応答でああれば、Ｌ１共有情報の更新に係る処理が実行される。
【０２４７】
なお、上述のとおり、Ｌ１共有情報の更新に係るアクセス要求を発行する際、リトライ判定部２１４によって、Ｌ１共有情報の更新処理に関するリトライ判定が実行される。当該動作例では、当該リトライ判定は、ステップ６００５において実現されている。リトライ判定部２１４に相当するリトライ判定回路６０４は、上述の通り、ステップ６００５において、処理対象である完了応答が最終の完了応答であるいか否かに限られず、当該処理対象である完了応答に対する上記リトライ判定を実行した。このリトライ判定となる完了応答には、最終の完了応答が含まれる。そのため、当該リトライ判定回路６０４の動作により、リトライ判定部２１４の動作が実現されている。
【０２４８】
一方、リトライ判定回路６０４は、最終応答検出回路６０３の検知結果を用いて、処理対象の完了応答が最終の完了応答であるか否かを判別して、リトライ判定を実行してもよい。例えば、ステップ６００７の「Ｙｅｓ」の矢印の後に、ステップ６００５の処理が実行されてもよい。この場合、最終の完了応答がリトライになることによって、Ｌ１共有情報の更新に係るオーダーがリトライされるときがある。このとき、当該完了応答に対応するアクセス要求に基づいて設定されたロックが解除されているため、アドレスロック機構６０２では、再度、解除されたロックの登録が行われる。
【０２４９】
§５  本実施形態に係る作用及び効果
最後に、本実施形態の作用及び効果を説明する。
【０２５０】
本実施形態では、アドレスロック制御部２１２はコアを識別してロックに係るアクセス要求元をロックし、かつ、最終応答検出部２１３及びリトライ判定部２１４はアクセス要求を適切に制御する。これらの動作によって、本実施形態では、同時期に個別に発生する処理応答を並列に処理することができる。そのため、本実施形態によれば、各コアで同時期に個別に発生した処理応答を並列に処理することができるため、コア数の増加に伴うレイテンシの悪化を改善することができる。
【０２５１】
なお、コア数が多いほど並列処理が可能となる機会は増える。そのため、コア数の増加に伴って、本実施形態による性能改善の効果は大きくなる。
【０２５２】
また、本実施形態では、リトライ判定回路６０４は、パイプライン上を先行するアクセス要求を参照することで、リトライ判定を実現している。そのため、本実施形態によれば、コア数の増加に伴うリトライ判定回路（図６）のゲート遅延問題を解消することができる。
【０２５３】
また、本実施形態では、アドレスロック制御部２１２は、コアを識別してロックに係るアクセス要求元をロックする。そのため、従来の「read modify write」の処理に係るリトライ処理が必要な後続処理が限定的になる。
【０２５４】
また、本実施形態では、リトライ判定回路６０４は、Ｌ１タグコピー２２３を参照することなく、リトライ判定を実行できる。そのため、Ｌ１タグコピー２２３のヒット情報を用いなくても、従来と同様の処理が可能となり、レイテンシが改善される。
【符号の説明】
【０２５５】
１００、１１０、１ｍ０  プロセッサコア
１０１、１１１、１ｍ１  命令制御部
１０２、１１２、１ｍ２  演算実行部
１０３、１１３、１ｍ３  １次キャッシュ
１０４    Ｌ１キャッシュ制御部
１０４ａ  アドレス変換部
１０４ｂ  リクエスト処理部
１０５    Ｌ１命令キャッシュ
１０５ａ  Ｌ１タグ
１０５ｂ  Ｌ１データ
１０５    Ｌ１オペランドキャッシュ
１０６ａ  Ｌ１タグ
１０６ｂ  Ｌ１データ
２００    ２次キャッシュ
２１０    Ｌ２キャッシュ制御部
２１１    リクエスト処理部
２１２    アドレスロック制御部
２１３    最終応答検出部
２１４    リトライ制御部
２２０    Ｌ２キャッシュデータ部
２２１    Ｌ２タグ
２２２    Ｌ２データ
２２３    Ｌ１タグコピー
６０２    アドレスロック機構
６０３    最終応答検出回路
６０４    リトライ判定回路
６０５    デコーダ
６２０    保持部
【図１】
2013084314.tif 000003
【図２】
2013084314.tif 000004
【図３】
2013084314.tif 000005
【図４】
2013084314.tif 000006
【図５】
2013084314.tif 000007
【図６】
2013084314.tif 000008
【図７Ａ】
2013084314.tif 000009
【図７Ｂ】
2013084314.tif 000010
【図８】
2013084314.tif 000011
【図９Ａ】
2013084314.tif 000012
【図９Ｂ】
2013084314.tif 000013
【図１０】
2013084314.tif 000014
【図１１】
2013084314.tif 000015
【図１２】
2013084314.tif 000016
【図１３】
2013084314.tif 000017
【図１４Ａ】
2013084314.tif 000018
【図１４Ｂ】
2013084314.tif 000019
【図１４Ｃ】
2013084314.tif 000020
【図１４Ｄ】
2013084314.tif 000021
【図１４Ｅ】
2013084314.tif 000022
【図１４Ｆ】
2013084314.tif 000023
【図１５】
2013084314.tif 000024
【図１６】
2013084314.tif 000025
【図１７】
2013084314.tif 000026
【図１８】
2013084314.tif 000027
【図１９】
2013084314.tif 000028
【図２０】
2013084314.tif 000029
【図２１】
2013084314.tif 000030
【図２２】
2013084314.tif 000031
【図２３】
2013084314.tif 000032
【図２４】
2013084314.tif 000033
【図２５】
2013084314.tif 000034
【手続補正書】
【提出日】平成26年6月25日(2014.6.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
図９Ａ及び９Ｂは、２次キャッシュ８００がコアから完了応答を受けた時にＬ１タグコピー８２０を更新するケースの動作例を示す。この場合、まず、図９Ａに示されるとおり、２次キャッシュ８００では、Ｌ２キャッシュ制御部８４０が、コアからのアクセス要求に応じて、リプレース要求データを格納するラインを検索する。また、Ｌ２キャッシュ制御部８４０は、リプレース対象アドレスに係るキャッシュタグを格納するＬ１タグコピー８２０のエントリを読み出す（ステップ３００１）。次に、読み出されたデータに基づいて、２次キャッシュ８００は、Ｌ１リプレースに基づくアクセス要求を発行したコアに対して、当該Ｌ１リプレースの実行を要求する（ステップ３００２）。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１６４
【補正方法】変更
【補正の内容】
【０１６４】
最終の完了応答が検出されると、本実施形態に係る２次キャッシュ２００では、Ｌ２タグ２２１の該当エントリに含まれるＬ１共有情報５０２の更新が実行される。このＬ１共有情報５０２の更新に係るアクセス要求について、リトライ制御部２１４は、当該アクセス要求に係る処理が実行可能か否かを判定する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１６５
【補正方法】変更
【補正の内容】
【０１６５】
例えば、リトライ制御部２１４は、更新されるＬ１共有情報５０２を格納するＬ２タグ２２１のエントリに対応するラインを対象とするアクセス要求に係る処理の完了応答がパイプライン上に先行して流れているか否かを判定する。リトライ制御部２１４は、先行する完了応答が存在する場合、Ｌ１共有情報５０２の更新処理は実行不可能であると判定し、当該更新処理の実行を取り消し、当該更新処理に係るアクセス要求をパイプラインに再
投入する。他方、リトライ制御部２１４は、先行する完了応答が存在しない場合、Ｌ１共有情報５０２の更新処理は実行可能であると判定し、当該更新処理の実行を許可する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０２０４
【補正方法】変更
【補正の内容】
【０２０４】
§４  回路例
次に、図１８〜２５を用いて、本実施形態に係る回路例を示す。図１８は、本実施形態に係るＬ２キャッシュ制御部２１０の回路を例示する。図１８に示されるとおり、本実施形態に係るＬ２キャッシュ制御部２１０は、リクエスト処理部２１１、アドレスロック機構６０２、最終応答検出回路６０３、及び、リトライ判定回路６０４を備える。なお、アドレスロック機構６０２は、アドレスロック制御部２１２に相当する。最終応答検出回路６０３は、最終応答検出部２１３に相当する。リトライ判定回路６０４は、リトライ制御部２１４に相当する。各回路の詳細については、後述する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０２４７
【補正方法】変更
【補正の内容】
【０２４７】
なお、上述のとおり、Ｌ１共有情報の更新に係るアクセス要求を発行する際、リトライ制御部２１４によって、Ｌ１共有情報の更新処理に関するリトライ判定が実行される。当該動作例では、当該リトライ判定は、ステップ６００５において実現されている。リトライ制御部２１４に相当するリトライ判定回路６０４は、上述の通り、ステップ６００５において、処理対象である完了応答が最終の完了応答であるいか否かに限られず、当該処理対象である完了応答に対する上記リトライ判定を実行した。このリトライ判定となる完了応答には、最終の完了応答が含まれる。そのため、当該リトライ判定回路６０４の動作により、リトライ制御部２１４の動作が実現されている。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０２５０
【補正方法】変更
【補正の内容】
【０２５０】
本実施形態では、アドレスロック制御部２１２はコアを識別してロックに係るアクセス要求元をロックし、かつ、最終応答検出部２１３及びリトライ制御部２１４はアクセス要求を適切に制御する。これらの動作によって、本実施形態では、同時期に個別に発生する処理応答を並列に処理することができる。そのため、本実施形態によれば、各コアで同時期に個別に発生した処理応答を並列に処理することができるため、コア数の増加に伴うレイテンシの悪化を改善することができる。
【国際調査報告】
2013084314.tif 000035
2013084314.tif 000036
2013084314.tif 000037
2013084314.tif 000038