(57)【要約】本発明の一側面に係る演算処理装置は、第１のキャッシュメモリを含む複数の演算処理部と、複数の演算処理部がそれぞれ演算したデータを保持する第２のキャッシュメモリと、制御対象となる第１のキャッシュメモリのキャッシュブロックのウェイを示すウェイ情報を含む制御対象のアクセス要求元の第１のキャッシュメモリに関する属性情報を取得する取得部と、アドレス情報と属性情報とを保持する保持部と、第１のキャッシュメモリに関して複数の演算処理部のいずれかが発行するリプレース要求に係るアクセス要求に含まれるリプレース対象アドレスと第１のキャッシュメモリにおけるリプレース対象のキャッシュブロックのウェイを示すウェイ情報とに基づき、制御対象のアドレス情報と属性情報とにより特定される第２のキャッシュメモリのキャッシュブロックに対するリプレース要求に係るアクセス要求を制御する制御部と、を備える。
2013084315.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ演算を行うとともにアクセス要求を出力する、第１のキャッシュメモリを含む複数の演算処理部と、
前記複数の演算処理部がそれぞれ演算したデータを保持する、前記複数の演算処理部に共有される第２のキャッシュメモリと、
制御対象のアクセス要求元の演算処理部において制御対象となる第１のキャッシュメモリのキャッシュブロックのウェイを示すウェイ情報を含む該制御対象のアクセス要求元の前記第１のキャッシュメモリに関する属性情報を取得する取得部と、
前記第２のキャッシュメモリにおける前記制御対象のアクセス要求の対象となるキャッシュブロックを特定する制御対象アドレスに関するアドレス情報と、取得された前記属性情報とを保持する保持部と、
前記第１のキャッシュメモリに関して前記複数の演算処理部のいずれかが発行するリプレース要求に係るアクセス要求に含まれるリプレース対象アドレスと第１のキャッシュメモリにおけるリプレース対象のキャッシュブロックのウェイを示すウェイ情報とに基づき、前記制御対象のアドレス情報と前記属性情報とにより特定される第２のキャッシュメモリのキャッシュブロックに対する前記リプレース要求に係るアクセス要求を制御する制御部と、
を備える演算処理装置。
【請求項２】
前記取得部は、更に、前記制御対象のアクセス要求元の演算処理部を示す情報、及び、前記アクセス要求の対象となるデータの種別を示す情報のうちの少なくとも一方の情報を取得する、
請求項１に記載の演算処理装置。
【請求項３】
それぞれ演算を行うとともにアクセス要求を出力する、第１のキャッシュメモリを含む複数の演算処理部と、前記複数の演算処理部がそれぞれ演算したデータを保持する、前記複数の演算処理部に共有される第２のキャッシュメモリと、を備える演算処理装置の制御方法において、
前記演算処理装置が有する取得部が、制御対象のアクセス要求元の演算処理部において制御対象となる第１のキャッシュメモリのキャッシュブロックのウェイを示すウェイ情報を含む該制御対象のアクセス要求元の前記第１のキャッシュメモリに関する属性情報を取得し、
前記演算処理装置が有する保持部が、前記第２のキャッシュブロックにおける前記制御対象のアクセス要求の対象となるキャッシュブロックを特定する制御対象アドレスに関するアドレス情報と、取得された前記属性情報とを保持し、
前記演算処理装置が有する制御部が、前記第１のキャッシュメモリに関して前記複数の演算処理部のいずれかが発行するリプレース要求に係るアクセス要求に含まれるリプレース対象アドレスと第１のキャッシュメモリにおけるリプレース対象のキャッシュブロックのウェイを示すウェイ情報とに基づき、前記制御対象のアドレス情報と前記属性情報とにより特定される第２のキャッシュメモリのキャッシュブロックに対する前記リプレース要求に係るアクセス要求を制御する、
演算処理装置の制御方法。
【請求項４】
前記取得部は、更に、前記制御対象のアクセス要求元の演算処理部を示す情報、及び、前記アクセス要求の対象となるデータの種別を示す情報のうちの少なくとも一方の情報を取得する、
請求項３に記載の演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、及び、演算処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、プロセッサコアの実行速度と主記憶装置に対するアクセス速度との差を埋めるために、キャッシュメモリが用いられる。アクセス速度とメモリ容量とのトレードオフの関係から、大抵のキャッシュメモリは、２階層以上に階層化されている。階層化されたキャッシュメモリは、プロセッサコアから近い順に、１次（Ｌ１）キャッシュメモリ、２次（Ｌ２）キャッシュメモリ等と呼ばれる。なお、以下、プロセッサコアを単に「コア」とも記載する。主記憶装置を単に「メモリ」又は「メインメモリ」とも記載する。キャッシュメモリを単に「キャッシュ」とも記載する。【０００３】
メインメモリのデータは、ブロックを単位としてキャッシュメモリに対応付けられる。キャッシュメモリのブロックとメインメモリのブロックとの対応付け方式として、セットアソシアティブ（set associative）方式が知られている。なお、以下では、メインメモリのブロックとキャッシュメモリのブロックとを区別するために、メインメモリのブロックを特に「メモリブロック」と表記する。また、キャッシュメモリのブロックを「キャッシュブロック」又は、「ライン」と表記する。【０００４】
セットアソシアティブ方式とは、メインメモリ及びキャッシュメモリをいくつかのセットに分け、各セット内において、メインメモリとキャッシュメモリとの対応付けを行う方式である。なお、セットは、カラムとも呼ばれる。セットアソシアティブ方式では、キャッシュメモリの各セット内に収容可能なキャッシュブロックの数が定められている。当該収容可能なキャッシュブロックの数は、ロー数、レベル数、又は、ウェイ数と呼ばれる。【０００５】
セットアソシアティブ方式では、キャッシュブロックは、インデックスとウェイ情報によって、識別される。具体的には、インデックスによって、該当キャッシュブロックを収容するセットが識別される。また、ウェイ情報によって、セット内に収容されるキャッシュブロックのうちの該当キャッシュブロックが識別される。ウェイ情報は、例えば、該当キャッシュブロックの識別に用いられるウェイ番号である。【０００６】
メモリブロックとキャッシュブロックとの割り当てには、割り当て対象となるメモリブロックのアドレスが用いられる。セットアソシアティブ方式では、割り当て対象となるメモリブロックは、当該メモリブロックのアドレスの一部と一致するインデックスにより示されるセットに収容されるいずれかのキャッシュブロックに割り当てられる。つまり、アドレスの一部によって、キャッシュメモリ内のインデックスが指定される。【０００７】
なお、当該割り当てに用いられるアドレスは、物理アドレス（実アドレス）及び論理アドレス（仮想アドレス）のいずれのアドレスでもよい。また、キャッシュメモリ内のインデックスを指定するために使われる当該アドレスの一部は、セットアドレスとも呼ばれる。これらのアドレスは、ビットにより表わされる。なお、メインメモリにおいて、同一のセットに収容されるメモリブロックは、同一のセットアドレスを有するメモリブロックである。【０００８】
メインメモリは、キャッシュメモリよりも容量が大きい。そのため、メインメモリにおけるセットに収容されるメモリブロックの数は、キャッシュメモリにおけるセットに収容されるキャッシュブロックの数よりも多い。したがって、メインメモリ内の全てのメモリブロックをキャッシュメモリ内のキャッシュブロックに割り当てることはできない。つまり、メインメモリにおける各セットに収容されるメモリブロックは、キャッシュメモリにおける各セットに収容されるキャッシュブロックに割り当てられているメモリブロックと、割り当てられていないメモリブロックとに分けることができる。【０００９】
ここで、例えば、プロセッサコアにより指定されたアドレスに該当するメモリブロックの代わりに、当該メモリブロックに割り当てられたキャッシュブロックから、データを取得する場面を考える。この場合、キャッシュメモリ内において、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックが検索される。【００１０】
当該検索においてキャッシュブロックがヒットすれば、プロセッサコアにより指定されるデータは、キャッシュメモリ内のヒットしたキャッシュブロックから取得することができる。他方、当該検索においてキャッシュブロックがヒットしなければ、プロセッサコアにより指定されるデータは、キャッシュメモリ内には存在しない。そのため、プロセッサコアにより指定されるデータは、メインメモリから取得される。このような場面は、キャッシュミスヒットとも呼ばれる。【００１１】
なお、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックの検索には、インデックスとキャッシュタグとが用いられる。インデックスは、上述の通り、該当キャッシュブロックを収容するセットを示す。また、キャッシュタグは、各セット内において、メモリブロックに対応するキャッシュブロックを検索するために用いられるタグである。【００１２】
キャッシュタグは、キャッシュブロック毎設けられる。キャッシュブロックにメモリブロックが割り当てられた際、当該キャッシュブロックに対応するキャッシュタグには、当該メモリブロックのアドレスの一部が格納される。このキャッシュタグに格納されるアドレスの一部は、セットアドレスとは異なる。具体的には、キャッシュタグには、当該メモリブロックのアドレスからセットアドレスを除いた部分から取得される適当なビット長のアドレスが格納される。なお、キャッシュタグに格納されるアドレスを、以下、タグアドレスと表記する。【００１３】
このようなインデックスとキャッシュタグが用いられて、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックが検索される。【００１４】
例えば、まず、キャッシュメモリから、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックを収容する可能性のあるセットが検索される。具体的には、キャッシュメモリから、プロセッサコアにより指定されたアドレスのセットアドレス該当部分のアドレスと一致するインデックスが検索される。このときに検索されるインデックスにより示されるセットが、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックを収容する可能性のあるセットである。【００１５】
そして、検索されたインデックスにより示されるセットに収容されるキャッシュブロックから、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックが検索される。具体的には、検索されたセットに収容される各キャッシュブロックに対応付けられたキャッシュタグのうち、プロセッサコアにより指定されたアドレスのタグアドレス該当部分のアドレスを格納するキャッシュタグが検索される。このときに検索されるキャッシュタグに対応付けられたキャッシュブロックが、プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックである。【００１６】
なお、当該検索において、プロセッサコアにより指定されたアドレスのタグアドレス該当部分のアドレスを格納するキャッシュタグが検索されなければ、キャッシュミスヒットである。この場合、プロセッサコアにより指定されたアドレスに該当するメモリブロックに割り当てられたキャッシュブロックは、キャッシュメモリ内には存在しない。そのため、プロセッサコアにより指定されるデータは、メインメモリから取得される。【００１７】
プロセッサコアにより指定されたアドレスに該当するメモリブロックが割り当てられたキャッシュブロックは、このように検索される。これにより、メモリブロックに格納されているデータがキャッシュメモリにも格納されている場合は、当該データは、キャッシュメモリから取得される。他方、メモリブロックに格納されているデータがキャッシュメモリに格納されていない場合は、当該データは、メモリブロックから取得される。【００１８】
なお、キャッシュメモリのブロックとメインメモリのブロックとの対応付け方式として、セットアソシアティブ方式の他に、ダイレクトマッピング方式、フルアソシアティブ方式等の方式が知られている。ダイレクトマッピング方式は、メインメモリのブロックのアドレスによって対応付けられるキャッシュメモリのブロックを定める方式である。ダイレクトマッピング方式は、セットアソシアティブ方式におけるウェイ数が１である場合の対応付け方式に該当する。また、フルアソシアティブ方式は、キャッシュメモリの任意のブロックとメインメモリの任意のブロックとを対応させる方式である。【００１９】
一方、近年、チップ当たりの性能向上及び消費電力削減の観点から、プロセッサコアを複数個備えるマルチコアプロセッサシステムが主流となってきている。このマルチコアプロセッサシステムにおいて、例えば、各々のプロセッサコアが１次キャッシュメモリを有し、複数のプロセッサコアによって２次キャッシュメモリが共有されるマルチコアプロセッサシステムが知られている。【００２０】
このとき、２次キャッシュメモリは、当該２次キャッシュメモリを共有する複数のプロセッサコアが有する１次キャッシュメモリと当該２次キャッシュメモリとの間で、キャッシュメモリ間の整合性であるキャッシュコヒーレンシを維持する機構を備える。キャッシュコヒーレンシを維持するために、２次キャッシュメモリは、あるプロセッサコアからデータを要求された場合、各プロセッサコアが有する１次キャッシュメモリに当該要求に係るデータが格納されているか否かを調べる。【００２１】
あるプロセッサコアから要求されたデータが各１次キャッシュメモリに格納されているか否かを調べる方法として、データ要求がある度に、全プロセッサコアの１次キャッシュメモリに対して２次キャッシュメモリがスヌープを行なう方法が知られている。しかし、この方法では、１次キャッシュメモリから問い合わせ結果が返ってくるまでのマシンサイクルがかかる分、データ要求に対する応答までのレイテンシが長くなってしまう。【００２２】
特許文献１では、このレイテンシを改善する方法が開示されている。特許文献１では、１次キャッシュメモリのキャッシュタグのコピーを２次キャッシュメモリのキャッシュタグ内に格納することで、１次キャッシュメモリへのスヌープ処理を不要とする方法が開示されている。【００２３】
１次キャッシュメモリのキャッシュタグのコピーが２次キャッシュメモリのキャッシュタグ内に格納されていると、２次キャッシュメモリは、自身のキャッシュタグにおいて１次キャッシュメモリの状態を参照することが可能となる。そのため、２次キャッシュメモリは、１次キャッシュメモリに対してスヌープしなくても、あるプロセッサコアから要求されたデータが各１次キャッシュメモリに格納されているか否かを調べることができる。特許文献１では、このような方法により、レイテンシを改善する方法が開示されている。なお、以下、１次キャッシュメモリのキャッシュタグをＬ１タグと呼ぶ。また、２次キャッシュメモリのキャッシュタグをＬ２タグと呼ぶ。【００２４】
しかしながら、２次キャッシュメモリの容量と１次キャッシュメモリの容量との差が大きいほど、２次キャッシュメモリに格納されるデータの多くは、１次キャッシュメモリに格納されていないことになる。そのため、Ｌ１タグのコピーを格納する領域をＬ２タグ内に設けると、Ｌ２タグ内のＬ１タグコピーを格納する領域がほとんど使用されない無駄な領域となってしまう。物量と消費電力の観点からこの状態は好ましくないため、改善が求められていた。【００２５】
特許文献２及び３では、この無駄な領域を改善する方法が開示されている。特許文献２及び３では、Ｌ１タグのコピーの代わりに、各１次キャッシュメモリにおける該当ラインの共有状態を示す情報をＬ２タグ内に格納し、Ｌ１タグのコピーをＬ２タグとは別の領域に格納する方法が開示されている。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２００６−４０１７５号公報
【特許文献２】特許第４２９７９６８号公報
【特許文献３】特開２０１１−６５５７４号公報
【特許文献４】特開平５−３４２１０１号公報
【発明の概要】
【発明が解決しようとする課題】
【００２７】
図１４は、マルチコア・プロセッサにおける１次キャッシュと２次キャッシュの接続例を示す。図１４により示される接続例では、各コア（７００、７１０、・・・、７ｎ０）はそれぞれ、１次キャッシュ（７０１、７１１、・・・、７ｎ１）を備える。なお、ｎは自然数である。そして、２次キャッシュ８００は、各コア（７００、７１０、・・・、７ｎ０）によって共有される。図１４により示される接続例では、２次キャッシュ８００は、各コア（７００、７１０、・・・、７ｎ０）とメモリ９００との間に存在する。【００２８】
また、各１次キャッシュ（７０１、７１１、・・・、７ｎ１）における該当ラインの共有状態を示す情報を格納するＬ１共有情報８１１がＬ２タグ８１０内の領域に設けられている。【００２９】
更に、２次キャッシュ８００内には、Ｌ２タグ８１０とは別の領域に、Ｌ１タグのコピーを格納するＬ１タグコピー８２０が設けられている。図１４において、Ｌ１タグコピー８２１は、コア７００の１次キャッシュタグであるＬ１タグ７０２のコピーである。Ｌ１タグコピー８２２は、コア７１０の１次キャッシュタグであるＬ１タグ７１２のコピーである。Ｌ１タグコピー８２ｎは、コア７ｎ０の１次キャッシュタグであるＬ１タグ７ｎ２のコピーである。なお、各１次キャッシュ（７０１、７１１、・・・、７ｎ１）及び２次キャッシュ８００のデータ格納構造には、セットアソシアティブ方式が採用されているとする。【００３０】
２次キャッシュ８００では、コア（７００、７１０、・・・、７ｎ０）からのアクセス要求に応じて、当該アクセス要求基づいて要求される処理が実行される。２次キャッシュ８００は、１つ以上のパイプラインを備えることにより、コア（７００、７１０、・・・、７ｎ０）からのアクセス要求に応じて実行される処理を並列処理することが可能である。このコア（７００、７１０、・・・、７ｎ０）からのアクセス要求には、Ｌ１リプレースに基づくアクセス要求が含まれる。なお、以下、コアからのアクセス要求を「リクエスト」とも記載する。【００３１】
Ｌ１リプレースは、例えば、１次キャッシュにおいてキャッシュミスヒットした場合に発生する処理である。コアから要求されるデータが１次キャッシュに格納されていない場合、当該データは、２次キャッシュ又はメモリから取得され、１次キャッシュに格納される。１次キャッシュにおいて、当該データは、当該データのアドレスの一部と一致するインデックスで特定されるセット内におけるいずれかのラインに格納される。【００３２】
このように１次キャッシュにデータを書き込む際、書き込み対象のセット内におけるすべてのラインにデータが格納されており、書き込み対象のセット内のラインに空きがないときがある。このとき、コアから要求されるデータを１次キャッシュに書き込むため、ＬＲＵ（Least Recently Used）等の置き換えアルゴリズムに基づいて特定されたラインにおいて、データの置き換え処理が発生する。この置き換え処理が、Ｌ１リプレースである。【００３３】
なお、以下、Ｌ１リプレースにおいて、置き換え対象のラインに書き込まれるデータ及び当該データに対応するアドレスを、それぞれ、リプレース要求データ及びリプレース要求アドレスと呼ぶ。上述のとおり、当該リプレース要求データが、コアからのアクセス要求の対象となっているデータである。また、Ｌ１リプレースによって、リプレース要求データに置き換えられるデータ及び当該データに対応するアドレスを、ぞれぞれ、リプレース対象データ及びリプレース対象アドレスと呼ぶ。【００３４】
Ｌ１リプレースが発生すると、Ｌ１リプレースに基づくアクセス要求が発行される。２次キャッシュ８００では、当該アクセス要求に受け取ると、例えば、Ｌ１タグコピー８２０において、リプレース対象データが格納されていたラインにリプレース要求データを上書きすることにより、リプレース対象データを消去する。【００３５】
２次キャッシュ８００では、このようなＬ１リプレースに基づくアクセス要求を含むコアからのアクセス要求に基づいて要求される処理が並列処理される。このように処理が並列処理される場合、パイプラインを流れる先行のアクセス要求に基づいて要求される処理の内容によっては、当該処理が完了するまでの間、後続のアクセス要求に基づいて要求される処理は、その実行を取り消され、再試行させられる。【００３６】
例えば、２次キャッシュ８００は、Ｌ２キャッシュ制御部８３０によって、このような後続の処理の実行取消、および、再試行の動作を実現する。図１４に示される例では、Ｌ２キャッシュ制御部８３０は、アドレスロック制御部８３１とリトライ制御部８３２を備える。【００３７】
アドレスロック制御部８３１は、先行のアクセス要求に基づいて要求される処理によってロックされるアドレスを保持する。そして、アドレスロック制御部８３１は、後続のアクセス要求の対象となるアドレスとアドレス保持部に保持されているアドレスとを比較する。これにより、アドレスロック制御部８３１は、後続のアクセス要求に基づいて要求される処理の対象となるアドレスがロックされているか否かを判定する。リトライ制御部８３２は、アドレスロック制御部８３１の判定結果（マッチ情報）に基づいて、後続のアクセス要求に基づいて要求される処理がその実行を取り消されるか否かを識別して、後続の処理の実行の取消と再試行を制御する。なお、マッチ情報は、例えば、当該ロックの有無を表現する１ビットの情報である。以下、アドレスロック制御部８３１によって実行される当該判定を「ロックチェック」と呼ぶ。【００３８】
ここで、ロックされるアドレスには、２種類のアドレスが存在する。１つ目のアドレスは、アクセス要求の対象となっているデータのアドレスである。２つ目のアドレスは、コアからのアクセス要求がＬ１リプレースに基づくアクセス要求である場合におけるリプレース対象アドレスである。コアからのアクセス要求がＬ１リプレースに基づくアクセス要求である場合、当該アクセス要求に基づいて要求される処理では、リプレース対象データが処理される。そのため、アクセス要求に基づいて要求される処理の対象であるリプレース要求アドレスに加えて又は代えて、リプレース対象アドレスがロックされる。コアからのアクセス要求に基づいて要求される処理の実行に伴い、アドレスロック制御部８３１では、ロックされるアドレスとして、これら２種類のアドレスが保持される。【００３９】
また、アドレスロック制御部８３１に保持されているアドレス、すなわち、ロックされているアドレスを表現する方法として、ロック対象のアドレス、すなわち、フルサイズのアドレスをそのまま用いる方法がある。【００４０】
他方、特許文献３及び４には、Ｌ２インデックス及びＬ２ウェイによって、フルサイズのアドレスを表現する方法が開示されている。１次キャッシュのラインに対応する２次キャッシュのラインを一意に特定することができれば、２次キャッシュにおけるキャッシュヒットの情報を利用して、１次キャッシュのラインを検索することができる。特許文献３及び４には、１次キャッシュのラインと２次キャッシュのラインを対応付ける方法が開示されている。【００４１】
具体的には、Ｌ１タグコピーにおいて該当ラインを検索する場合に、１次キャッシュにおける検索処理で用いられる比較アドレスの代わりに、Ｌ２インデックスとＬ１インデックスの差分とＬ２ウェイとを用いる方法が開示されている。すなわち、Ｌ１タグコピーには、比較アドレスの代わりに、Ｌ２インデックスとＬ１インデックスの差分とＬ２ウェイとが登録される。特許文献３及び４では、これによって、１次キャッシュのラインと２次キャッシュのラインを対応付け、Ｌ１タグコピーの物量を削減することが開示されている。【００４２】
当該方法によれば、２次キャッシュにおけるキャッシュヒットに係るヒット情報（Ｌ２インデックス及びＬ２ウェイ）により、一意に１次キャッシュのラインを特定することができる。そのため、当該方法によれば、Ｌ２インデックス及びＬ２ウェイは、フルサイズのアドレス相当の情報となる。したがって、当該方法によれば、フルサイズのアドレスに代えて、Ｌ２インデックス及びＬ２ウェイによって、ロック対象のアドレスを表現することができる。【００４３】
つまり、従来の方法では、フルサイズのアドレスを用いる、または、Ｌ２インデックス及びＬ２ウェイの組を用いることによって、ロック対象のアドレスが表現されていた。これらを前提に、図１５〜図１７を用いて、従来のロックチェックに係る動作を説明する。なお、本動作例では、コアからのアクセス要求には、当該アクセス要求に基づいて要求される処理の対象となるデータのアドレスと、当該アクセス要求に関連する１次キャッシュのラインのＬ１ウェイとが含まれているものとする。なお、コアからのアクセス要求に関連する１次キャッシュのラインとは、例えば、コアからのアクセス要求がデータのロード要求であるならば、ロードしたデータの格納先となるラインである。【００４４】
図１５は、フルサイズのアドレスをそのまま用いてロックされているアドレスを表現する方法におけるロックチェックに係る動作を例示する。【００４５】
アクセス要求に基づいて要求される処理の対象となるデータのアドレスについてロックチェックを実行する場合、アドレスロック制御部８３１は、コアからのアクセス要求に含まれるアドレスを取得する。なお、図１５におけるアドレス(A)が、コアからのアクセス要求に含まれるアドレスである。そして、アドレスロック制御部８３１は、コアからのアクセス要求から取得されるアドレスと保持しているロック対象のアドレスとを比較することで、取得した処理対象のアドレスがロック対象となっているか否かを判定する。リトライ制御部８３２は、アドレスロック制御部８３１の当該判定結果に基づいて、コアからのアクセス要求に基づいて要求される処理の実行が取り消されるか否かを識別し、当該処理の実行の取消と再試行を制御する。【００４６】
一方、Ｌ１リプレースに基づくアクセス要求におけるリプレース対象アドレスについてロックチェックを実行する場合、アドレスロック制御部８３１は、Ｌ１タグコピー８２０から、リプレース対象アドレスを取得する。なお、図１５におけるアドレス(B)が、リプレース対象アドレスである。具体的には、アドレスロック制御部８３１は、Ｌ１リプレースに基づくアクセス要求に含まれる情報に一致するラインをＬ１タグコピー８２０から検索する。なお、図１５におけるアドレス(A)及びＬ１ウェイ(A)が、Ｌ１リプレースに基づくアクセス要求に含まれる情報である。そして、アドレスロック制御部８３１は、当該検索の結果により示されるラインから、リプレース対象アドレスを取得する。【００４７】
そして、アドレスロック制御部８３１は、取得したリプレース対象アドレスと保持しているロック対象のアドレスとを比較することで、当該リプレース対象アドレスがロック対象となっているか否かを判定する。リトライ制御部８３２は、アドレスロック制御部８３１の当該判定結果に基づいて、Ｌ１リプレースに基づくアクセス要求に基づいて要求される処理の実行が取り消されるか否かを識別し、当該処理の実行の取消と再試行を制御する。【００４８】
また、図１６は、Ｌ２インデックス及びＬ２ウェイを用いてロックされているアドレスを表現する方法におけるロックチェックに係る動作を例示する。【００４９】
アクセス要求に基づいて要求される処理の対象となっているデータのアドレスについてロックチェックを実行する場合、アドレスロック制御部８３１は、Ｌ２タグ８１０から、当該処理の対象となるアドレスに対応するＬ２インデックス及びＬ２ウェイを取得する。具体的には、アドレスロック制御部８３１は、アクセス要求に含まれる情報にヒットするラインをＬ２タグ８１０から検索する。なお、図１６におけるアドレス(A)が、アクセス要求に含まれる情報である。そして、アドレスロック制御部８３１は、当該検索の結果により示されるラインから、処理対象となるアドレスに対応するＬ２インデックス及びＬ２ウェイを取得する。なお、図１６におけるＬ２インデックス(A)及びＬ２ウェイ(A)が、処理対象となるアドレスに対応するＬ２インデックス及びＬ２ウェイである。【００５０】
そして、アドレスロック制御部８３１は、取得したＬ２インデックス及びＬ２ウェイと保持しているロック対象のＬ２インデックス及びＬ２ウェイとを比較することで、当該処理対象となるアドレスがロック対象となっているか否かを判定する。リトライ制御部８３２は、アドレスロック制御部８３１の当該判定結果に基づいて、コアからのアクセス要求に基づいて要求される処理の実行が取り消されるか否かを識別し、当該アクセス要求の実行の取消と再試行を制御する。【００５１】
一方、Ｌ１リプレースに基づくアクセス要求におけるリプレース対象アドレスについてロックチェックを実行する場合、アドレスロック制御部８３１は、Ｌ１タグコピー８２０から、リプレース対象アドレスに対応するＬ２インデックス及びＬ２ウェイを取得する。具体的には、アドレスロック制御部８３１は、Ｌ１リプレースに基づくアクセス要求に含まれる情報に一致するラインをＬ１タグコピー８２０から検索する。なお、図１５におけるアドレス(A)及びＬ１ウェイ(A)が、Ｌ１リプレースに基づくアクセス要求に含まれる情報である。そして、アドレスロック制御部８３１は、当該検索の結果により示されるラインから、リプレース対象アドレスに対応するＬ２インデックス及びＬ２ウェイを取得する。なお、図１６におけるＬ２インデックス(B)及びＬ２ウェイ(B)が、リプレース対象アドレスに対応するＬ２インデックス及びＬ２ウェイである。【００５２】
そして、アドレスロック制御部８３１は、取得したＬ２インデックス及びＬ２ウェイと保持しているロック対象のＬ２インデックス及びＬ２ウェイとを比較することで、当該リプレース対象アドレスがロック対象となっているか否かを判定する。リトライ制御部８３２は、アドレスロック制御部８３１の当該判定結果に基づいて、Ｌ１リプレースに基づくアクセス要求に基づいて要求される処理の実行が取り消されるか否かを識別し、当該処理の実行の取消と再試行を制御する。【００５３】
このように、従来の方法では、Ｌ１リプレースに基づくアクセス要求におけるロックチェックでは、アドレスロック制御部８３１は、リプレース対象アドレスを取得するために、Ｌ１タグコピー８２０の検索を実行する。図１５及び１６により示されるロックチェックの動作についてまとめた図が、図１７である。図１７は、Ｌ１リプレースに基づくアクセス要求に係る動作を例示する。【００５４】
図１７に示されるとおり、Ｌ１リプレースに基づくアクセス要求がコアから発行されると、２次キャッシュ８００では、Ｌ１タグコピーから、リプレース対象アドレス、または、リプレース対象アドレスに対応するＬ２インデックス及びＬ２ウェイが取得される。そして、当該リプレース対象アドレス、または、Ｌ２インデックス及びＬ２ウェイに基づくロックチェックが実行される。そして、ロックされていなければ、Ｌ１リプレースに基づくアクセス要求に係る処理が実行される。当該アクセス要求に係る処理が実行されると、例えば、Ｌ１タグコピー８２０において、リプレース対象データが格納されていたラインにリプレース要求データが上書きされる。これにより、リプレース対象データがＬ１タグコピー８２０から消去される。【００５５】
従来の方法では、Ｌ１リプレースに基づくアクセス要求に基づいて要求される処理においてロックチェックを行う場合、リプレース対象アドレス等を取得するために、Ｌ１タグコピーにおける検索処理が実行される。具体的には、第１のキャッシュメモリ（Ｌ１）を有する複数のプロセッサコアで第２のキャッシュメモリが共有されている。この場合、いずれかの第１のキャッシュメモリにおいてリプレース要求が発生すると、第２のキャッシュメモリでは、当該リプレース要求の対象のアドレス等を特定するために、第１のキャッシュメモリのタグのコピー（Ｌ１タグコピー）が検索される。そのため、リプレース対象アドレスに係るロックチェックでは、第１のキャッシュメモリのタグのコピーから当該リプレース対象アドレスを検索する分の遅延が生じるという問題点がある。【００５６】
一側面では、本発明は、リプレース要求の対象となるアドレスのロックチェックの際に生じる遅延を改善することを課題とする。
【課題を解決するための手段】
【００５７】
開示の技術の一側面は、以下の演算処理装置によって例示できる。本演算処理装置は、それぞれ演算を行うとともにアクセス要求を出力する、第１のキャッシュメモリを含む複数の演算処理部と、前記複数の演算処理部がそれぞれ演算したデータを保持する、前記複数の演算処理部に共有される第２のキャッシュメモリと、制御対象のアクセス要求元の演算処理部において制御対象となる第１のキャッシュメモリのキャッシュブロックのウェイを示すウェイ情報を含む該制御対象のアクセス要求元の前記第１のキャッシュメモリに関する属性情報を取得する取得部と、前記第２のキャッシュメモリにおける前記制御対象のアクセス要求の対象となるキャッシュブロックを特定する制御対象アドレスに関するアドレス情報と、取得された前記属性情報とを保持する保持部と、前記第１のキャッシュメモリに関して前記複数の演算処理部のいずれかが発行するリプレース要求に係るアクセス要求に含まれるリプレース対象アドレスと第１のキャッシュメモリにおけるリプレース対象のキャッシュブロックのウェイを示すウェイ情報とに基づき、前記制御対象のアドレス情報と前記属性情報とにより特定される第２のキャッシュメモリのキャッシュブロックに対する前記リプレース要求に係るアクセス要求を制御する制御部と、を備える。
【発明の効果】
【００５８】
本演算処理装置によれば、リプレース要求の対象となるアドレスのロックチェックの際に生じる遅延を改善することができる。
【図面の簡単な説明】
【００５９】
【図１】図１は、実施の形態に係る装置を例示する。
【図２】図２は、実施の形態に係るキャッシュタグのデータ形式を例示する。
【図３Ａ】図３Ａは、通常のオーダーにおける、実施の形態に係るロック処理を例示する。
【図３Ｂ】図３Ｂは、リプレースオーダーにおける、実施の形態に係るロック処理を例示する。
【図４】図４は、実施の形態に係るアドレスロック制御部のロック処理を例示する。
【図５】図５は、実施の形態における、リプレース対象アドレスの取得に係る動作を例示する。
【図６Ａ】図６Ａは、通常のオーダーにおける、実施の形態に係るロックチェックを例示する。
【図６Ｂ】図６Ｂは、リプレースオーダーにおける、実施の形態に係るロックチェックを例示する。
【図７】図７は、実施の形態に係るアドレスロック制御部のロックチェックを例示する。
【図８】図８は、実施の形態に係るロック処理及びロックチェックを例示する。
【図９】図９は、実施の形態に係るアドレスロック制御部の回路を例示する。
【図１０】図１０は、実施の形態に係るロックチェックの具体的な動作を例示する。
【図１１】図１１は、実施の形態に係るロックチェックの具体的な動作を例示する。
【図１２Ａ】図１２Ａは、従来方式におけるロック範囲を例示する。
【図１２Ｂ】図１２Ｂは、実施の形態におけるロック範囲を例示する。
【図１３Ａ】図１３Ａは、従来方式のロック範囲による影響を例示する。
【図１３Ｂ】図１３Ｂは、実施の形態のロック範囲による影響を例示する。
【図１４】図１４は、従来のマルチコアプロセッサシステムを例示する。
【図１５】図１５は、フルサイズのアドレスによりロック対象を表現する場合におけるロックチェックの動作を例示する。
【図１６】図１６は、Ｌ２インデックス及びＬ２ウェイによりロック対象を表現する場合におけるロックチェックの動作を例示する。
【図１７】図１７は、Ｌ１リプレースに基づくアクセス要求に対する、従来のマルチコアプロセッサシステムの動作を例示する。
【発明を実施するための形態】
【００６０】
以下、本発明の一側面に係る実施の形態を、図面に基づいて説明する。ただし、以下で説明する実施の形態は、あらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、本実施の形態に応じた具体的要素が適宜採用されてもよい。なお、以下、本発明の一側面に係る実施の形態を「本実施形態」とも表記する。
【００６１】
また、以下で説明する本実施形態は、２階層のキャッシュメモリを例示する。しかしながら、本発明は、２階層以外のキャッシュメモリに適用されてもよい。３階層以上のキャッシュメモリに適用される場合を考慮し、以下の実施形態における１次キャッシュは「第１のキャッシュメモリ」と称されてもよい。また、以下の実施形態における２次キャッシュは「第２のキャッシュメモリ」と称されてもよい。
【００６２】
なお、本実施形態において登場するデータは、自然言語（日本語等）により説明される。しかしながら、これらのデータは、具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【００６３】
§１  装置例
まず、図１を用いて、本実施形態に係る装置例を説明する。図１は、本実施形態に係るマルチコアプロセッサシステムを例示する。図１に示されるとおり、本実施形態に係るマルチコアプロセッサシステムは、ｍ＋１個のプロセッサコア（１００、１１０、１ｍ０）、２次キャッシュ２００、メモリコントローラ３００、及び、メインメモリ４００と、を備える。なお、ｍは自然数である。本実施形態では、メインメモリ４００以外のユニットは１つの半導体チップ上に設けられる。しかし、本実施形態に係るマルチコアプロセッサシステムは、このように形成されなければならない訳ではない。半導体チップと各ユニットの関係は、適宜決定される。
【００６４】
各プロセッサコア（１００、１１０、・・・、１ｍ０）は、それぞれ命令制御部（１０１、１１１、・・・、１ｍ１）、演算実行部（１０２、１１２、・・・、１ｍ２）、１次キャッシュ（１０３、１１３、・・・、１ｍ３）を備える。なお、図１に示されるとおり、各プロセッサコア（１００、１１０、・・・、１ｍ０）は、それぞれ「第１コア」、「第２コア」、「第ｍ＋１コア」とも称する。また、各プロセッサコア（１００、１１０、・・・、１ｍ０）は、それぞれ演算処理部に相当する。
【００６５】
命令制御部（１０１、１１１、・・・、１ｍ１）は、各プロセッサコア（１００、１１０、・・・、１ｍ０）における命令のデコードと処理順序制御を行う制御部である。具体的には、命令制御部（１０１、１１１、・・・、１ｍ１）は、記憶装置から命令（機械命令）をフェッチする。機械命令を格納する記憶装置は、例えば、メインメモリ４００、２次キャッシュ２００、１次キャッシュ（１０３、１１３、・・・、１ｍ３）である。そして、命令制御部（１０１、１１１、・・・、１ｍ１）は、フェッチした命令を解釈（デコード）する。また、命令制御部（１０１、１１１、・・・、１ｍ１）は、当該命令における処理対象となるデータを記憶装置から取得して、各プロセッサコア（１００、１１０、・・・、１ｍ０）に設けられたレジスタ等に格納する。そして、命令制御部（１０１、１１１、・・・、１ｍ１）は、取得した各データに対する命令の実行を制御する。
【００６６】
演算実行部（１０２、１１２、・・・、１ｍ２）は、演算処理を行う。具体的には、各演算実行部（１０２、１１２、・・・、１ｍ２）は、レジスタ等に読み込まれたデータに対して、各命令制御部（１０１、１１１、・・・、１ｍ１）によって解釈された命令に対応する演算の処理を実行する。
【００６７】
１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００は、命令制御部（１０１、１１１、・・・、１ｍ１）及び演算実行部（１０２、１１２、・・・、１ｍ２）で処理されるデータを一時的に保持するキャッシュメモリである。
【００６８】
１次キャッシュ（１０３、１１３、・・・、１ｍ３）はそれぞれ、各プロセッサコア（１００、１１０、・・・、１ｍ０）専用のキャッシュメモリである。また、１次キャッシュ（１０３、１１３、・・・、１ｍ３）は、命令（IF）キャッシュとオペランド（OP）キャッシュとが分離された分離型キャッシュメモリである。命令キャッシュは、命令アクセスにより要求されるデータを格納する。オペランドキャッシュは、データアクセスにより要求されるデータを格納する。なお、オペランドキャッシュは、データキャッシュとも呼ばれる。このように格納するデータの種別によりキャッシュを分離することで、分離しない統合型キャッシュと比べて、キャッシュの処理速度の高速化を図ることが可能となる。ただし、本発明で利用されるキャッシュメモリの構造は、当該分離型キャッシュメモリに限定される訳ではない。
【００６９】
一方、２次キャッシュ２００は、各プロセッサコア（１００、１１０、・・・、１ｍ０）により共有されるキャッシュメモリである。２次キャッシュ２００は、命令とオペランドを区別せずに格納する統合型キャッシュメモリである。なお、処理能力を向上させるため、当該キャッシュのバンク分けを行ってもよい。
【００７０】
また、１次キャッシュ（１０３、１１３、・・・、１ｍ３）は、２次キャッシュ２００に比して、高速にデータを処理できるが、データを格納する容量は小さい。各プロセッサコア（１００、１１０、・・・、１ｍ０）は、処理速度及び容量の異なる各１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００を使用することにより、メインメモリ４００との処理速度差を埋める。
【００７１】
なお、本実施形態では、１次キャッシュ（１０３、１１３、・・・、１ｍ３）に格納されるデータは、２次キャッシュ２００にも格納される。つまり、本実施形態で使用されるキャッシュは、プロセッサコアに近い上位のキャッシュメモリに格納されるデータは、下位のキャッシュメモリに含まれるという関係が成立するインクルージョンキャッシュである。
【００７２】
例えば、２次キャッシュ２００は、プロセッサコアから要求されたデータ（アドレスブロック）をメモリから取得すると、１次キャッシュに取得したデータを転送すると同時に、当該データを自身に登録する。また、２次キャッシュ２００は、１次キャッシュに登録されたデータが無効化、又は、２次キャッシュ２００に書き戻された後に、自身に登録された当該データをメモリに書き戻す。このような動作により、１次キャッシュに格納されるデータは、２次キャッシュ２００に含まれる。
【００７３】
インクルージョンキャッシュは、キャッシュの他の構造に比べて、キャッシュタグの構造や制御が簡単であるという利点を持つ。ただし、本発明において使用されるキャッシュメモリはインクルージョンキャッシュに限定されない。
【００７４】
更に、１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００のデータ格納構造には、セットアソシアティブ方式が採用される。上述のとおり、１次キャッシュ（１０３、１１３、・・・、１ｍ３）のラインは、Ｌ１インデックス及びＬ１ウェイによって表現される。また、２次キャッシュ２００のラインは、Ｌ２インデックス及びＬ２ウェイによって表現される。なお、１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００のラインのサイズは同じであるとする。
【００７５】
図１に示されるとおり、１次キャッシュ１０３は、Ｌ１キャッシュ制御部１０４、Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６を備える。Ｌ１キャッシュ制御部１０４は、アドレス変換部１０４ａとリクエスト処理部１０４ｂとを含む。また、Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６は、それぞれ、Ｌ１タグ（１０５ａ、１０６ａ）及びＬ１データ（１０５ｂ、１０６ｂ）を含む。なお、本実施形態では、各１次キャッシュ（１１３、・・・、１ｍ３）は、１次キャッシュ１０３と同じように形成される。
【００７６】
アドレス変換部１０４ａは、命令制御部１０１によりフェッチされる命令により指定される論理アドレスを物理アドレスに変換する。当該アドレスの変換には、ＴＬＢ（Translation Lookaside Buffer）又はハッシュ表等が用いられてもよい。
【００７７】
また、リクエスト処理部１０４ｂは、命令制御部１０１により制御される命令に基づくキャッシュのデータ操作を処理する。例えば、リクエスト処理部１０４ｂは、命令制御部１０１からのデータ要求に対応するデータをＬ１命令キャッシュ１０５、又は、Ｌ１オペランドキャッシュ１０６から検索する。該当するデータが検索された場合は、リクエスト処理部１０４ｂは、検索されたデータを命令制御部１０１に返す。また、該当するデータが検索されない場合は、リクエスト処理部１０４ｂは、キャッシュミスヒットの結果を命令制御部１０１に返す。なお、リクエスト処理部１０４ｂは、上述したＬ１リプレースに基づく１次キャッシュ内におけるデータ操作についても処理する。また、リクエスト処理部１０４ｂは、２次キャッシュ２００からの要求によって、当該要求により指定されるデータを２次キャッシュ２００に書き戻す処理も実行する。
【００７８】
Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６は、１次キャッシュ１０３のデータを格納する記憶部である。Ｌ１命令キャッシュ１０５は、命令フェッチの際にアクセスされる機械命令を格納する。また、Ｌ１オペランドキャッシュ１０６は、機械命令のオペランド部で指定されるデータを格納する。
【００７９】
Ｌ１タグ（１０５ａ、１０６ａ）はそれぞれ、Ｌ１命令キャッシュ１０５、及び、Ｌ１オペランドキャッシュ１０６のキャッシュタグを格納する。当該キャッシュタグとＬ１インデックスによって、ラインに格納されたデータのアドレスが特定される。また、Ｌ１データ（１０５ｂ、１０６ｂ）は、それぞれ、Ｌ１インデックスとＬ１タグ（１０５ａ、１０６ａ）によって特定されるアドレスに対応するデータを格納する。
【００８０】
また、図１に示されるとおり、２次キャッシュ２００は、Ｌ２キャッシュ制御部２１０及びＬ２キャッシュデータ部２２０を備える。Ｌ２キャッシュ制御部２１０は、第１のキャッシュメモリに関して複数の演算処理部のいずれかが発行するリプレース要求に係るアクセス要求に含まれるリプレース対象アドレスと第１のキャッシュメモリにおけるリプレース対象のキャッシュブロックのウェイを示すウェイ情報とに基づき、上述の制御対象のアドレス情報と属性情報とにより特定される第２のキャッシュメモリのキャッシュブロックに対するリプレース要求に係るアクセス要求を制御する。本実施形態では、Ｌ２キャッシュ制御部２１０は、リクエスト処理部２１１、リトライ制御部２１２、及び、アドレスロック制御部２１３を備える。また、Ｌ２キャッシュデータ部２２０は、Ｌ２タグ２２１、Ｌ２データ２２２、及び、Ｌ１タグコピー２２３を含む。
【００８１】
リクエスト処理部２１１は、各プロセッサコア（１００、１１０、・・・、１ｍ０）からのアクセス要求に基づいて要求される処理を実行する。本実施形態では、プロセッサコア１００からの当該アクセス要求は、命令制御部１０１によって発行される。
【００８２】
当該アクセス要求には、例えば、１次キャッシュ内においてキャッシュミスヒットが生じた場合に発行されるデータ要求が含まれる。例えば、命令制御部１０１は、命令フェッチやデータアクセスに際して、１次キャッシュ１０３からデータを取得しようとする。このとき、対象のデータが１次キャッシュ１０３内に格納されていなければ、キャッシュミスヒットが起こる。キャッシュミスヒットが起こると、命令制御部１０１は、２次キャッシュ２００から、当該対象のデータを取得しようとする。上記データ要求は、この際に発行される、コアから２次キャッシュ２００に対してのアクセス要求である。
【００８３】
また、アクセス要求には、例えば、Ｌ１リプレースに基づくアクセス要求が含まれる。例えば、命令制御部１０１は、１次キャッシュ１０３内に格納されていないデータを２次キャッシュ２００又はメインメモリ４００から取得する。この際、命令制御部１０１は、リクエスト処理部１０４ｂに対して、取得したデータを１次キャッシュ１０３内に格納することを要求する。この際にＬ１リプレースが生じたとする。上述のとおり、Ｌ１リプレースが生じると、Ｌ１リプレースが生じた１次キャッシュ内、及び、２次キャッシュ内でデータの処理が実行される。Ｌ１リプレースに基づくアクセス要求は、この際に、２次キャッシュ内でのデータ処理の実行のために、命令制御部１０１によって発行されるアクセス要求である。
【００８４】
なお、例えば、命令フェッチに際してこれらの処理が実行される場合は、取得されたデータは、Ｌ１命令キャッシュ１０５に格納される。また、例えば、機械命令のオペランド部に係るデータへのアクセスに際してこれらの処理が実行される場合は、取得されたデータは、Ｌ１オペランドキャッシュ１０６に格納される。
【００８５】
リクエスト処理部２１１は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００との間でコヒーレンシを維持した上で、これらのアクセス要求を実行する。つまり、リクエスト処理部２１１は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００との間でキャッシュのコヒーレンシを制御する。このとき、リクエスト処理部２１１は、プロセッサコア（１００、１１０、・・・、１ｍ０）に対して、キャッシュのコヒーレンシを維持するための、１次キャッシュに対する該当ラインの無効化や書き戻しの処理の要求をする。一例は、後述する。
【００８６】
なお、コアからのアクセス要求について、以降、Ｌ１リプレースに基づくアクセス要求に係る処理の命令を「Ｌ１リプレースオーダー」とも表記し、Ｌ１リプレースに基づくアクセス要求以外のアクセス要求に係る処理の命令を「通常のオーダー」と表記する。ここで、アクセス要求は、当該アクセス要求の対象となるデータの取得などの関連する処理を含めて、処理要求と称してもよい。
【００８７】
リトライ制御部２１２は、アドレスロック制御部２１３によりロックされているアドレスに係るアクセス要求の実行を取り消し、再試行する。本実施形態では、２次キャッシュ２００は、１つ以上のパイプラインを備える（不図示）。上述のとおり、処理が並列処理される場合、パイプラインを流れる先行の処理によっては、先行の処理が完了するまでの間、後続の処理の実行は、取り消され、再試行させられる。リトライ制御部２１２は、当該後続の処理の実行の取消と再試行を制御する。
【００８８】
アドレスロック制御部２１３は、Ｌ１属性情報取得部２１４、アドレス保持部２１５、及び、ロック判定部２１６を含む。Ｌ１属性情報取得部２１４、及び、アドレス保持部２１５、は、それぞれ、取得部、及び、保持部に相当する。
【００８９】
Ｌ１属性情報取得部２１４は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）に関する属性情報を取得する。また、Ｌ１属性情報取得部２１４は、コアからのアクセス要求に基づいて要求される処理の対象となるアドレス情報を取得する。アドレス情報は、第２のキャッシュメモリにおける制御対象のアクセス要求の対象となるキャッシュブロックを特定する制御対象アドレスに関し、例えば、上述した、フルサイズのアドレス、又は、Ｌ２インデックス及びＬ２ウェイの組である。本実施形態では、アドレス情報は、Ｌ２キャッシュ及びＬ２ウェイの組である。また、当該属性情報には、当該アクセス要求に関連する１次キャッシュのラインのＬ１ウェイを識別するためのウェイ情報が含まれる。当該ウェイ情報は、例えば、該当するラインのＬ１ウェイを示すウェイ番号である。なお、当該属性情報は、制御対象のアクセス要求元の第１のキャッシュメモリに関する属性情報に相当する。また、当該ウェイ情報は、制御対象のアクセス要求元の演算処理部において制御対象となる第１のキャッシュメモリのキャッシュブロックのウェイを示すウェイ情報に相当する。
【００９０】
本実施形態では、Ｌ１属性情報取得部２１４は、更に、当該アクセス要求を発行したコアを示す情報、及び、データの種別を示す情報を含む属性情報を取得する。なお、コアを示す情報とは、制御対象のアクセス要求元の演算処理部を示す情報に相当し、例えば、コア番号である。また、データの種別を示す情報とは、アクセス要求の対象となるデータの種別を示す情報に相当し、当該データが機械命令に係るデータであるのか、又は、機械命令のオペランド部により指定されるデータであるのかを示す情報である。なお、機械命令に係るデータは、命令キャッシュに格納されるデータである。また、機械命令のオペランド部により指定されるデータは、オペランドキャッシュに格納されるデータである。これらの情報は、プロセッサコアにより発行されるアクセス要求に基づいて要求される処理が実行されている間、当該処理の実行にあたりロックされる対象を示す情報として用いられる。また、これらの情報は、コアからのアクセス要求に基づいて要求される処理の対象がロックされているか否かを判定するためにも用いられる。
【００９１】
アドレス保持部２１５は、各プロセッサコアにより発行されるアクセス要求に係る処理が実行されている間、該処理の実行にあたりロックされる対象を示す情報として、Ｌ１属性情報取得部２１４により取得されたアドレス情報及び属性情報を保持する。なお、以下、アドレス保持部２１５により保持される情報を、ロック対象情報とも表記する。
【００９２】
本実施形態では、アドレス保持部２１５は、プロセッサコアにより発行されるアクセス要求に基づいて要求される処理が実行されている間、当該処理に対応するロック対象情報を有効に保持する。そして、当該処理の実行が完了した後、アドレス保持部２１５は、当該処理に対応するロック対象情報を無効化する。データの無効化は、データの削除によって実現されてもよいし、データが無効であることを示すフラグにより実現されてもよい。本実施形態では、後者の方法が採用される（後述する図９参照）。
【００９３】
なお、アドレス保持部２１５は、コアからのアクセス要求に基づいて要求される処理によりロックされる対象として、ロック対象のコア、及び、データの種別をそれぞれ識別可能な状態でロック対象情報を保持する。ロック対象のコア、及び、データの種別は、これらを識別するための情報がロック対象情報に含まれることで、識別されてもよい。また、ロック対象のコア、及び、データの種別は、これら毎にロック対象情報が用意されることで、識別されてもよい。本実施形態では、ロック対象のコアについては、後者の形態が採用され、ロック対象のデータの種別については、前者の形態が採用される（後述する図９参照）。
【００９４】
ロック判定部２１６は、プロセッサコアにより発行されるアクセス要求に基づいて要求される処理の対象がロックされているか否かを判定する。具体的には、ロック判定部２１６は、プロセッサコアにより発行されるアクセス要求に対応するアドレス情報及びＬ１ウェイを含む属性情報と、アドレス保持部２１５が保持するこれらの情報とを比較する。これにより、ロック判定部２１６は、当該アクセス要求に基づいて要求される処理の対象がロックされているか否かを判定する。ロックされているか否かが判定されるアクセス要求には、Ｌ１リプレースに基づくアクセス要求が含まれる。
【００９５】
アドレスロック制御部２１３は、これらのユニットにより、プロセッサコアが発行するアクセス要求に基づいて要求される処理を制御する。本実施形態に係るシステムは、このアドレスロック制御部２１３により、アドレスのロックを制御することで、リプレース要求の対象となるアドレスのロックチェックの際に生じる遅延を改善する。なお、アドレスロック制御部２１３の詳細な動作については後述する。
【００９６】
Ｌ２キャッシュデータ部２２０は、２次キャッシュ２００のデータを格納する記憶部である。Ｌ２タグ２２１は、２次キャッシュ２００のキャッシュタグを格納する。当該キャッシュタグとＬ２インデックスによって、２次キャッシュ２００内のラインに格納されたデータのアドレスが特定される。また、Ｌ２データ２２２は、Ｌ２インデックスとＬ２タグ２２１によって特定されるアドレスに対応するデータを格納する。更に、Ｌ１タグコピー２２３は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）のキャッシュタグのコピーを格納する。Ｌ１タグコピー２２３は、例えば、Ｌ１タグ（１０５ａ、１０６ａ）のコピーを格納する。
【００９７】
なお、図１に示されるとおり、本実施形態に係るマルチコアプロセッサシステムは、メモリコントローラ３００及びメインメモリ４００を備える。メモリコントローラ３００は、メインメモリ４００におけるデータの書き込み及び読み出し等を処理する。例えば、メモリコントローラ３００は、リクエスト処理部２１１により実行されるデータの書き戻しに応じて、当該書き戻し対象のデータをメインメモリ４００に書き込む。また、メモリコントローラ３００は、リクエスト処理部２１１からのデータ要求に応じて、当該要求に係るデータをメインメモリ４００から読み出す。なお、メインメモリ４００は、本実施形態に係るマルチコアプロセッサシステムで利用される主記憶装置である。
【００９８】
§２  データ形式
次に、図２を用いて、本実施形態で扱われるキャッシュタグのデータ形式について説明する。図２は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）及び２次キャッシュ２００において格納されるキャッシュタグのデータ形式を例示する。なお、図２は、１つのラインについてのキャッシュタグのデータ形式を例示する。
【００９９】
図２に示される例では、Ｌ１タグ（１０５ａ、１０６ａ）の各エントリは、物理アドレス上位ビットＢ１とステータス５００とを格納する領域を有する。物理アドレス上位ビットＢ１は、該当ラインの検索に用いられる。また、ステータス５００は、当該キャッシュタグに対応するラインに格納されたデータが有効か否か、データが更新されたか否か等を示す情報である。このようなＬ１タグにより、１次キャッシュに格納されたデータの検索が行われる。
【０１００】
具体的には、まず、リクエスト処理部１０４ｂは、Ｌ１命令キャッシュ１０５又はＬ１オペランドキャッシュ１０６内から、命令制御部１０１により与えられる論理アドレスの下位ビットと一致するＬ１インデックスが与えられたセットを検索する。命令フェッチの段階における動作であれば、リクエスト処理部１０４ｂは、Ｌ１命令キャッシュ１０５から該当するセットを検索する。また、機械命令のオペランド部において指定されるデータを取得する処理における動作であれば、リクエスト処理部１０４ｂは、Ｌ１オペランドキャッシュ１０６から該当するセットを検索する。
【０１０１】
次に、リクエスト処理部１０４ｂは、該当するセットの中から、命令制御部１０１により与えられた論理アドレスにより指定されるデータが格納されたラインを検索する。この検索は、物理アドレスを用いて行われる。そのため、当該検索の前までに、命令制御部１０１により与えられた論理アドレスは、アドレス変換部１０４ａによって、物理アドレスに変換される。
【０１０２】
つまり、１次キャッシュ１０３では、インデックスが論理アドレス（仮想アドレス）で与えられ、キャッシュタグが実アドレス（物理アドレス）で与えられる。このような方式は、ＶＩＰＴ（Virtually Indexed Physically Tagged）方式と呼ばれる。
【０１０３】
コアから与えられるアドレスは論理アドレスである。そのため、インデックスが物理アドレスで与えられるＰＩＰＴ（Physically Indexed Physically Tagged）方式では、該当ラインの検索は、論理アドレスから物理アドレスへの変換処理をした後に実行される。これに対して、ＶＩＰＴ方式によると、インデックスの特定と、論理アドレスから物理アドレスへの変換とが並列に処理することが可能となる。よって、ＶＩＰＴ方式は、ＰＩＰＴ方式に比べてレイテンシが少ない。
【０１０４】
また、キャッシュタグも論理アドレスで与えられるＶＩＶＴ（Virtually Indexed Virtually Tagged）方式では、異なる物理アドレスが同一の仮想アドレスに割り当てられる問題（ホモニム問題）が生じる。ＶＩＰＴ方式では、キャッシュタグに物理アドレスが用いられるため、当該ホモニム問題を検知することができる。
【０１０５】
これらの利点により、本実施形態で使用されるキャッシュには、ＶＩＰＴ方式が採用される。ただし、本発明で使用されるキャッシュは、ＶＩＰＴ方式に限定される訳ではない。
【０１０６】
リクエスト処理部１０４ｂは、アドレス変換部１０４ａによって変換された物理アドレスの上位ビットとＬ１タグの各エントリの物理アドレス上位ビットＢ１とを比較する。アドレス変換部１０４ａによって変換された物理アドレスの上位ビットと一致する物理アドレス上位ビットＢ１を含むＬ１タグのエントリに対応するラインが、命令制御部１０１により与えられた論理アドレスにより指定されたデータを格納するラインである。よって、リクエスト処理部１０４ｂは、与えられた物理アドレスの上位ビットと一致する物理アドレス上位ビットＢ１を含むＬ１タグのエントリを、検索したセットに含まれるラインに対応するＬ１タグの中から検索する。
【０１０７】
最後に、検索の結果、該当するＬ１タグのエントリが見つかった場合、リクエスト処理部１０４ｂは、該当するＬ１タグのエントリに対応するラインに格納されたデータを取得し、取得したデータを命令制御部１０１に渡す。他方、該当するＬ１タグのエントリが見つからなかった場合、リクエスト処理部１０４ｂは、キャッシュミスヒットと判定し、１次キャッシュ１０３内には指定されたデータは格納されていないことを命令制御部１０１に通知する。本実施形態では、このように１次キャッシュに格納されたデータの検索が行われる。
【０１０８】
なお、Ｌ１タグのエントリは、コア毎、データの種別毎、インデックス毎、及び、ウェイ毎に用意される。図１では、Ｌ１タグのエントリが、コア毎、インデックス毎、及び、データの種別毎に用意されることが示されている。また、本実施形態における１次キャッシュ（１０３、１１３、・・・、１ｍ３）のデータ格納構造には、セットアソシアティブ方式が採用されているため、Ｌ１タグのエントリは、ウェイ毎に用意される（後述する図９参照）。
【０１０９】
また、図２に示される例では、Ｌ２タグ２２１のエントリは、物理アドレス上位ビットＢ２、ステータス５０１、論理アドレス下位ビットＡ１、及び、Ｌ１共有情報５０２を格納する領域を有する。
【０１１０】
物理アドレス上位ビットＢ２は、２次キャッシュ２００における該当ラインの検索に用いられる。ステータス５０１は、２次キャッシュ２００において、当該キャッシュタグに対応するラインに格納されたデータが有効か否か、データが更新されたか否か等を示す情報である。
【０１１１】
また、論理アドレス下位ビットＡ１は、例えば、シノニム問題を解消するために用いられる。本実施形態では、１次キャッシュにおいてＶＩＰＴ方式が採用されている。そのため、異なる論理アドレスが同一の物理アドレスに割り当てられるシノニム問題が発生する可能性がある。本実施形態では、論理アドレス下位ビットＡ１を参照することで、当該シノニム問題が生じているか否かを検知することができる。
【０１１２】
Ｌ１共有情報５０２は、当該キャッシュタグに対応するラインに格納されたデータについての１次キャッシュ（１０３、１１３、・・・、１ｍ３）における共有状態を示す情報である（例えば、特許文献２及び３を参照）。Ｌ１共有情報５０２を格納する領域は、Ｌ２タグ２２１の物量を削減するため、Ｌ１タグコピー２２３を格納する代わりに設けられる。このようなＬ２タグ２２１により、２次キャッシュ２００に格納されたデータの検索が行われる。
【０１１３】
データの検索については、１次キャッシュ１０３における検索処理とほぼ同様に説明することができる。具体的には、リクエスト処理部２１１は、まず、コアから与えられるアクセス要求に含まれる物理アドレスの下位ビットと一致するＬ２インデックスが与えられたセットを検索する。なお、以下、コアからのアクセス要求に含まれる処理対象のアドレスを「リクエストアドレス」とも表記する。
【０１１４】
次に、リクエスト処理部２１１は、該当するセットの中から、コアから与えられたリクエストアドレスにより指定されるデータが格納されたラインを検索する。具体的には、リクエスト処理部２１１は、コアから与えられるリクエストアドレスの上位ビットと一致する物理アドレス上位ビットＢ２を含むＬ２タグ２２１のエントリを、検索したセットに含まれるラインに対応するＬ２タグ２２１の中から検索する。
【０１１５】
最後に、検索の結果、該当するＬ２タグ２２１のエントリが見つかった場合、リクエスト処理部２１１は、該当するＬ２タグ２２１のエントリに対応するラインに格納されたデータを取得し、アクセス要求を発行したコアに取得したデータを渡す。他方、該当するＬ２タグ２２１のエントリが見つからなかった場合、リクエスト処理部２１１は、キャッシュミスヒットと判定する。そして、リクエスト処理部２１１は、メモリコントローラ３００に対して、リクエストアドレスにより指定されるデータを要求する。メモリコントローラ３００は、リクエスト処理部２１１からの当該要求に応じて、メインメモリ４００から該当するデータを取得し、取得したデータを２次キャッシュ２００に渡す。
【０１１６】
なお、本実施形態では、２次キャッシュのデータ格納構造にはセットアソシアティブ方式が採用されているため、Ｌ２タグ２２１のエントリは、インデックス毎、及び、ウェイ毎に用意される（後述する図９参照）。
【０１１７】
また、１次キャッシュ１０３のデータ格納容量よりも、２次キャッシュ２００のデータ格納容量の方が大きい。そして、本実施形態では、１次キャッシュ１０３のラインサイズと２次キャッシュ２００のラインサイズは同じである。そのため、通常では、１次キャッシュ１０３のセットの数よりも２次キャッシュ２００のセットの数の方が多くなる。この場合、Ｌ１インデックスのビット長よりもＬ２インデックスのビット長の方が長くなる。よって、この場合、物理アドレス上位ビットＢ１のビット長よりも物理アドレス上位ビットＢ２のビット長の方が短くなる。ただし、それぞれのキャッシュ容量やウェイ数等によっては、物理アドレス上位ビットＢ１のビット長の方が物理アドレス上位ビットＢ２のビット長よりも短くなる場合も考えられるし、同じになる場合も考えられる。これらの関係は、適宜選択される。
【０１１８】
また、図２に示される例では、Ｌ１タグコピー２２３のエントリは、インデックス差分５０３、Ｌ２ウェイ５０４、及び、ステータス５０５を格納する領域を有する。
【０１１９】
インデックス差分５０３は、論理アドレス下位ビットＡ１と物理アドレス下位ビットＢ３との差分である。また、Ｌ２ウェイ５０４は、当該Ｌ１タグコピー２２３に対応する２次キャッシュのラインを表現するＬ２ウェイである。本実施形態では、１次キャッシュに格納されるデータは２次キャッシュに格納されるため、Ｌ２ウェイ５０４は特定される。このインデックス差分５０３及びＬ２ウェイ５０４により、Ｌ１タグコピー２２３のエントリとＬ２タグ２２１のエントリとが対応付けられる（特許文献３及び４を参照）。なお、ステータス５０５は、１次キャッシュ（１０３、１１３、・・・、１ｍ３）において、当該キャッシュタグに対応するラインに格納されたデータが有効か否か、データが更新されたか否か等を示す情報である。
【０１２０】
なお、このようなＬ１タグコピー２２３によれば、２次キャッシュ２００は、Ｌ２タグ２２１の検索結果を用いて、Ｌ１タグコピー２２３の検索を実行することができる。
【０１２１】
具体的には、リクエスト処理部２１１は、２次キャッシュ２００から該当するデータを検索するために、Ｌ２タグ２２１を参照する。２次キャッシュ２００内に該当するデータが存在する場合、当該データの物理アドレスを用いたＬ２タグ２２１の検索により、該当するデータを格納するラインに対応するＬ２タグ２２１内のエントリが検索される。この検索により、検索対象のデータに係るＬ２インデックスとＬ２ウェイを特定することができる。検索対象のデータに係るＬ１インデックスは、Ｌ２インデックスの一部、又は、Ｌ２タグ２２１内の論理アドレス下位ビットＡ１より、特定される。よって、Ｌ２タグ２２１の検索により、検索対象のデータに係るＬ１インデックス、Ｌ２インデックス、及び、Ｌ２ウェイが特定される。
【０１２２】
ここで、Ｌ１タグコピー２２３のエントリは、Ｌ１インデックス、インデックス差分５０３、及び、Ｌ２ウェイ５０４によって、特定することができる。インデックス差分５０３は、Ｌ１インデックス（論理アドレス下位ビットＡ１）とＬ２インデックス（物理アドレス下位ビットＢ３）との差分である。よって、２次キャッシュ２００は、Ｌ２タグ２２１の検索により特定されたＬ１インデックス、Ｌ２インデックス、及び、Ｌ２ウェイにより、検索対象のデータに対応するＬ１タグコピー２２３のエントリを特定することができる。
【０１２３】
なお、検索対象のデータに係るＬ１インデックスは、Ｌ２インデックスに含まれる場合がある。この場合、Ｌ２インデックスからＬ１インデックスが特定されてもよい。また、コアからのアクセス要求にＬ１インデックスに係る情報が含まれる場合がある。この場合、コアからのアクセス要求に含まれる情報からＬ１インデックスが特定されてもよい。なお、コアからのアクセス要求に含まれるＬ１インデックスに係る情報とは、例えば、論理アドレスそのものである。
【０１２４】
なお、本実施形態のキャッシュメモリは、インクルージョンキャッシュであるため、２次キャッシュ２００内に該当するデータが存在しない場合は、当該データは、１次キャッシュ内にも存在しない。そのため、２次キャッシュ２００内に存在しないデータについて、Ｌ１タグコピー２２３内のエントリが検索されることはない。
【０１２５】
なお、論理アドレスと物理アドレスの対応関係によっては、論理アドレス下位ビットＡ１が物理アドレス下位ビットＢ３に含まれる場合がある。この場合、インデックス差分５０３のビット長は、物理アドレス下位ビットＢ３のビット長と論理アドレス下位ビットＡ１のビット長の差と等しくなる。
【０１２６】
また、インデックス差分５０３とＬ２ウェイ５０４と合わせたビット長の方が物理アドレス上位ビットＢ１のビット長よりも短い場合、Ｌ１タグをそのままコピーする場合に比べて、Ｌ１タグコピー２２３の物量が削減される。
【０１２７】
このＬ１タグコピー２２３は、主に、１次キャッシュ（１０３、１１３、・・・、１ｍ３）と２次キャッシュ２００との間でコヒーレンシを維持するために用いられる（特許文献１〜３を参照）。なお、Ｌ１タグコピー２２３は、Ｌ１タグと同様の理由により、コア毎、データの種別毎、及び、ウェイ毎に用意される。
【０１２８】
§３  アドレスロック制御部
＜動作例＞
次に、図３Ａ、３Ｂ、４、５、６Ａ、６Ｂ、７、及び、８を用いて、本実施形態に係るアドレスロック制御部２１３の動作例を説明する。
【０１２９】
＜アドレスの登録＞
先に、図３Ａ、３Ｂ、４、及び、５を用いて、本実施形態に係るアドレスロック制御部２１３によるロック対象のアドレスの登録処理について説明する。図３Ａは、コアからのアクセス要求に係る処理の命令が通常のオーダーである場合における登録処理を例示する。また、図３Ｂは、コアからのアクセス要求に係る処理の命令がリプレースオーダーである場合における登録処理を例示する。なお、図３Ａ及び３Ｂにより示される登録処理についてまとめた図が、図４である。図４は、本実施形態に係るアドレスロック制御部２１３によるロック対象のアドレスの登録処理を例示する。
【０１３０】
アドレスロック制御部２１３は、コアからのアクセス要求により特定される情報を用いて、ロック対象を特定するためのロック対象情報を取得する。そして、アドレスロック制御部２１３は、アドレス保持部２１５において、取得したロック対象情報を保持する。本実施形態では、ロック対象情報がアドレス保持部２１５に保持されている間、当該ロック対象情報により示される対象がロック対象として登録された状態となる。
【０１３１】
なお、図３Ａ及び３Ｂに示されるとおり、本実施形態におけるロック対象を示す情報として保持されるロック対象情報からは、ロック対象のコア、データの種別、Ｌ２インデックス、Ｌ２ウェイ、Ｌ１インデックス、及び、Ｌ１ウェイの６種類の情報が特定可能である。なお、ロック対象情報は、これら６種類全ての情報が特定可能でなくてもよい。例えば、ロック対象情報は、これら６種類の情報のうちのいくつかの種類の情報が特定可能であってもよい。
【０１３２】
また、図３Ａ及び３Ｂにより示されるロック対象情報には、ロック対象を特定するための情報として、ロック対象のコア、データの種別、Ｌ２インデックス、Ｌ２ウェイ、Ｌ１インデックス、及び、Ｌ１ウェイの６種類の情報が含まれる。これにより、図３Ａ及び３Ｂにより示されるロック対象情報から、ロック対象のコア、データの種別、Ｌ２インデックス、Ｌ２ウェイ、Ｌ１インデックス、及び、Ｌ１ウェイが特定することができる。
【０１３３】
しかしながら、ロック対象情報にロック対象を示す情報が含まれていなくても、当該ロック対象情報に含まれていない情報により示されるロック対象を特定することができる。例えば、ロック対象情報を格納するエントリがコア毎に用意されている場合、ロック対象情報にコアを示す情報が含まれていなくても、ロック対象のコアを特定することができる。
【０１３４】
そのため、図３Ａ及び３Ｂを用いたアドレス登録処理についての以下の説明では、ロック対象を特定するための情報がロック対象情報に含まれているものとして説明するが、ロック対象を特定するための情報は、ロック対象情報に含まれていなくてもよい。そのロック対象を特定可能であれば、ロック対象情報に含まれる情報は、適宜選択されてよい。
【０１３５】
まず、ロック対象情報を登録する処理について、コアからのアクセス要求により特定可能な情報について説明する。図３Ａ及び３Ｂに示されるように、２次キャッシュ２００は、コアからのアクセス要求から、リクエストアドレス、リクエストコア、リクエストオペコード、及び、リクエストウェイを特定することができる。
【０１３６】
リクエストアドレスは、上述のとおり、コアにより発行されるアクセス要求に基づいて要求される処理の対象となるデータを格納するメインメモリ４００の物理アドレスである。リクエストアドレスには、物理アドレスに対応する論理アドレスが含まれてもよい。また、リクエストアドレスには、論理アドレスそのものではなく、１次キャッシュのラインの検索に用いた論理アドレス下位ビットＡ１（Ｌ１インデックス）が含まれてもよい。コアからのアクセス要求にはこれらの情報が含まれる。２次キャッシュ２００は、コアからのアクセス要求に含まれる情報により、リクエストアドレスを特定することができる。
【０１３７】
リクエストコアは、アクセス要求を発行したコアを示す。２次キャッシュ２００は、アクセス要求が流れてきたコアを特定することで、当該リクエストコアを特定することができる。なお、アクセス要求を発行したコアを示す情報がコアからのアクセス要求に含まれていることにより、当該リクエストコアが特定されてもよい。
【０１３８】
リクエストオペコードは、コアからのアクセス要求により指定されるデータの種別を示す。データの種別には、上記のとおり、命令フェッチにより取得される機械命令に係るデータと、機械命令のオペランド部により指定されるアドレスから取得されるデータの２種類が存在する。
【０１３９】
機械命令の実行において、各コアは、基本的には、機械命令を読み出し（命令フェッチ）、読み出した機械命令を解読し（デコード）、機械命令の対象となるオペランドデータを読み出し（オペランドフェッチ）、演算を実行し、結果を格納する。このとき、命令フェッチのフェーズでは、各コアは、機械命令に係るデータを要求する。また、オペランドフェッチのフェーズでは、機械命令のオペランド部により指定されるオペランドデータを要求する。すなわち、各コアの命令制御部は、アクセス要求（データ要求）を発行するタイミングにおける処理フェーズによって、これら２種類のデータのうちのどちらか一方のデータを要求する。
【０１４０】
当該要求の違いは、命令制御部によって発行されるアクセス要求を示すオペコードに反映される。命令制御部が、１次キャッシュ内の命令キャッシュに格納するデータを要求する場合、「0x00 IF-MI-SH」等のオペコードを含むアクセス要求が発行される。他方、命令制御部が、１次キャッシュ内のデータキャッシュに格納するデータを要求する場合、「0x01 OP-MI-SH」及び「0x02 OP-MI-EX」等のオペコードを含むアクセス要求が発行される。２次キャッシュ２００は、これらのオペコードをデコードすることで、リクエストオペコードを特定することができる。
【０１４１】
リクエストウェイは、コアからのアクセス要求により指定されるデータの格納先である１次キャッシュ内のラインのＬ１ウェイを示す。コアからのアクセス要求には、Ｌ１ウェイを示す情報が含まれる。２次キャッシュ２００は、その情報によって、当該リクエストウェイを特定することができる。なお、リプレースは、同一ラインにおけるデータの置き換えであるため、リプレース要求アドレスにより指定されるデータが格納されるラインとリプレース対象アドレスにより指定されるデータが格納されていたラインとは同一のウェイである。そのため、コアからのアクセス要求に係る処理の命令がＬ１リプレースオーダーである場合、リクエストウェイは、リプレース要求アドレスに対応するＬ１ウェイを示すとともに、リプレース対象アドレスに対応するＬ１ウェイを示す。
【０１４２】
次に、コアからのアクセス要求により特定可能な情報を用いて、ロック対象を特定するための情報を取得する処理について説明する。当該処理は、コアからのアクセス要求に係る処理の命令が通常のオーダーであるか、又は、リプレースオーダーであるかによって異なる。図３Ａ及び３Ｂを用いて当該処理について説明する。
【０１４３】
コアからのアクセス要求に係る処理の命令が通常のオーダーである場合、図３Ａに示されるようにしてロック対象を特定するための情報が取得される。例えば、Ｌ２インデックス及びＬ２ウェイについて、コアからのアクセス要求に含まれる情報から特定されるリクエストアドレスに基づいて、Ｌ２タグ２２１内の該当エントリが検索される。リクエストアドレスにより指定されるデータが２次キャッシュ２００内に格納されている場合、当該検索により、当該リクエストアドレスに対応するＬ２タグ２２１のエントリが見つかる。この場合、Ｌ１属性情報取得部２１４は、Ｌ２タグ２２１の検索処理に基づいて、リクエストアドレスにより指定されるデータが格納されたラインのＬ２インデックス及びＬ２ウェイを取得する。
【０１４４】
なお、Ｌ２タグ２２１のエントリが見つからない場合、検索対象のデータは、２次キャッシュ２００内に格納されていない。この場合、リクエスト処理部２１１は、メインメモリ４００から該当データを取得し、２次キャッシュ２００内に取得したデータを格納する。このとき、メインメモリ４００から取得したデータの格納先は、データの取得前に特定される。
【０１４５】
具体的には、メインメモリ４００からデータを取得する前に実行される２次キャッシュ２００内の検索処理において、当該データが格納されるべきラインが含まれるセットが特定される。当該セット内のラインに空きがあれば、空いているラインのうちのいずれかのラインが、データの格納先として特定される。また、当該セット内のラインに空きがなければ、リプレース処理が実行される。そして、置き換え対象のラインが特定されることで、データの格納先が特定される。なお、以下、このようなリプレース処理を「Ｌ２リプレース」と呼ぶ。
【０１４６】
このときに特定されるデータの格納先は、コアからのアクセス要求に基づいて要求される処理の対象となる。そのため、Ｌ１属性情報取得部２１４は、ロック対象を特定するための情報として、特定されたデータの格納先を指定するＬ２インデックス及びＬ２ウェイを取得する。なお、当該取得は、メインメモリ４００からのデータ取得処理の前後いずれのタイミングで行われてよい。
【０１４７】
なお、Ｌ２タグ２２１のエントリの検索において、Ｌ１属性情報取得部２１４は、ロック対象を特定するための情報として、Ｌ１インデックスを取得してもよい。Ｌ１インデックスがＬ２インデックスに含まれる場合は、Ｌ１属性情報取得部２１４は、取得したＬ２インデックスからＬ１インデックスを特定してもよい。また、Ｌ２タグ２２１のエントリに含まれる論理アドレス下位ビットＡ１からＬ１インデックスを特定してもよい。
【０１４８】
また、上述したとおり、２次キャッシュ２００では、Ｌ２タグ２２１の検索結果を用いて、Ｌ１タグコピー２２３のエントリを検索することができる。これにより、該当するエントリがＬ１タグコピー２２３内に見つかった場合、Ｌ１属性情報取得部２１４は、ロック対象を特定するための情報として、該当するエントリに対応するラインのＬ１ウェイを取得する。
【０１４９】
なお、このとき、Ｌ１タグコピー２２３は、コア毎、データの種別毎に設けられている。そのため、Ｌ１属性情報取得部２１４は、当該Ｌ１タグコピー２２３から、ロック対象を特定するための情報として、アクセス要求を発行したコアを示す情報とデータの種別を示す情報とを取得してもよい。
【０１５０】
また、Ｌ１属性情報取得部２１４は、コアからのアクセス要求に含まれる情報から特定可能なリクエストオペコードから、アクセス要求に係るデータの種別を特定することができる。更に、Ｌ１属性情報取得部２１４は、コアからのアクセス要求に含まれる情報から特定可能なリクエストアドレスからＬ１インデックスを特定することができる。よって、Ｌ１属性情報取得部２１４は、これらを特定することにより、ロック対象を特定するための情報として、データの種別を示す情報、及び、Ｌ１インデックスを取得してもよい。
【０１５１】
他方、コアからのアクセス要求に係る処理の命令がリプレースオーダーである場合、図３Ｂにより示されるようにしてロック対象を特定するための情報が取得される。例えば、リクエストアドレス又はＬ２タグ２２１のエントリ内に格納される論理アドレス下位ビットＡ１から、リプレース対象のラインのＬ１インデックスが特定される。また、リクエストウェイから、リプレース対象のラインのＬ１ウェイが特定される。このように特定されることにより、Ｌ１属性情報取得部２１４は、ロック対象を示すＬ１インデックス及びＬ１ウェイを取得することができる。
【０１５２】
また、Ｌ１属性情報取得部２１４は、これらＬ１インデックス及びＬ１ウェイにより示されるＬ１タグコピー２２３のエントリを参照する。Ｌ１属性情報取得部２１４は、当該参照したエントリから、１次キャッシュ内におけるリプレース対象のラインに対応する２次キャッシュ２００内のラインを示すＬ２インデックス及びＬ２ウェイを取得することができる。
【０１５３】
また、Ｌ１タグコピー２２３はコア毎及びデータの種別毎にエントリを有する。そのため、Ｌ１属性情報取得部２１４は、Ｌ１タグコピー２２３を参照することで、ロック対象を示す情報として、ロック対象のコアを示す情報、データ種別を示す情報を取得してもよい。また、Ｌ１属性情報取得部２１４は、Ｌ１タグコピー２２３から、ロック対象を特定するための情報として、Ｌ１インデックスを取得してもよい。
【０１５４】
更に、Ｌ１属性情報取得部２１４は、リクエストコアから、ロック対象のコアを示す情報を取得してもよい。Ｌ１属性情報取得部２１４は、リクエストオペコードから、データ種別を示す情報を取得してもよい。Ｌ１属性情報取得部２１４は、リクエストアドレスから、Ｌ１インデックスを取得してもよい。
【０１５５】
最後に、このように取得される、ロック対象のコア、データの種別、Ｌ２インデックス、Ｌ２ウェイ、Ｌ１インデックス、及び、Ｌ１ウェイを含むロック対象情報がアドレス保持部２１５により保持される。本実施形態では、ロック対象情報がアドレス保持部２１５に保持されている間、アドレスロック制御部２１３において、ロック対象情報により示される対象がロック対象として登録された状態となる。
【０１５６】
図５は、この時の動作を例示した図である。図５に示されるように、リプレース要求アドレスにより指定されるデータと、リプレース対象アドレスにより指定されるデータは異なる。そのため、リプレース対象アドレスにより指定されるデータを格納する２次キャッシュ内のラインを特定するために、Ｌ１タグコピー２２３内の該当エントリの検索が実行される。なお、図５における「hit」と記載されたＬ２タグ２２１上のエントリは、リプレース要求アドレスにより指定されるデータを格納するラインに対応するエントリである。また、図５における「victim」と記載されたＬ２タグ２２１上のエントリは、リプレース対象アドレスにより指定されるデータを格納するラインに対応するエントリである。
【０１５７】
なお、図３Ｂにより示される動作例では、リプレース要求アドレスについてのシノニム問題を解消するため、Ｌ１タグコピー２２３が検索される前に、Ｌ２タグ２２１が検索されている（特許文献２を参照）。その他については、通常のオーダーの際の動作と同様であるため説明を省略する。なお、本実施形態では、当該Ｌ１タグコピー２２３内のエントリの特定には、更に、コア及びデータの種別が考慮される。図４は、図３Ａ及び図３Ｂにより示される動作例を簡略化して１つにまとめた図である。このようにして、ロック対象のアドレスがアドレスロック制御部２１３に登録される。
【０１５８】
＜ロックチェック＞
続いて、図６Ａ、６Ｂ、及び、７を用いて、本実施形態に係るアドレスロック制御部２１３によるロックチェックについて説明する。図６Ａは、コアからのアクセス要求に係る処理の命令が通常のオーダーである場合におけるロックチェックを例示する。また、図６Ｂは、コアからのアクセス要求に係る処理の命令がリプレースオーダーである場合におけるロックチェックを例示する。なお、図６Ａ及び６Ｂにより示されるロックチェックについてまとめた図が、図７である。図７は、本実施形態に係るアドレスロック制御部２１３によるロックチェックを例示する。
【０１５９】
アドレスロック制御部２１３は、コアからのアクセス要求に係る処理の対象がロック対象として登録されているか否かを判定することで、ロックチェックを行う。なお、当該ロックチェックは、コアからのアクセス要求に係る処理の命令が通常のオーダーであるか、リプレースオーダーであるかによって異なる。
【０１６０】
コアからのアクセス要求に係る処理の命令が通常のオーダーである場合、図６Ａに示されるようにロックチェックが行われる。具体的には、リクエストアドレスに基づいて、Ｌ２タグ２２１内の該当エントリが検索される。リクエストアドレスにより指定されるデータが２次キャッシュ２００内に格納されている場合、当該検索により、当該リクエストアドレスに対応するＬ２タグ２２１のエントリが見つかる。この場合、ロック判定部２１６は、アドレス保持部２１５に保持されているロック対象情報を参照して、当該Ｌ２タグ２２１のエントリにより特定されるＬ２インデックス及びＬ２ウェイに一致するロック対象情報（エントリ）を検索する。なお、リクエストアドレスに対応するＬ２タグ２２１のエントリが見つからなかった場合、上述したデータの格納先として特定されるラインのＬ２インデックス及びＬ２ウェイに一致するロック対象情報が検索されてもよい。
【０１６１】
当該検索の結果、ロック対象情報が見つかった場合、ロック判定部２１６は、コアからのアクセス要求の対象がロックされていると判定する。他方、ロック対象情報が見つからなかった場合、ロック判定部２１６は、コアからのアクセス要求の対象がロックされていないと判定する。そして、ロック判定部２１６は、当該判定結果をリトライ制御部２１２に渡す。リトライ制御部２１２では、当該判定結果によって、コアからのアクセス要求に係る処理のリトライが制御される。
【０１６２】
コアからのアクセス要求に係る処理の命令がリプレースオーダーである場合、図６Ｂに示されるようにロックチェックが行われる。具体的には、リクエストアドレスにより特定されるＬ１インデックス及びリクエストウェイにより特定されるＬ１ウェイに一致するロック対象情報がロック判定部２１６により検索される。これらロックチェックに用いられるＬ１インデックス及びＬ１ウェイは、それぞれ、１次キャッシュ内おけるリプレース対象のラインのＬ１インデックス及びＬ１ウェイである。なお、リクエストアドレスにＬ１インデックスが含まれない場合、Ｌ２タグ２２１から検索されるエントリから特定されるＬ１インデックスが用いられてもよい。
【０１６３】
このように、本実施形態では、従来の方法に比べて、リプレースオーダーに対するロックチェックの場合に、各キャッシュタグにおける検索処理が不要となり、コアからのアクセス要求に含まれる情報だけでロックチェックが可能である。そのため、本実施形態では、従来の方法に比べて、リプレースオーダーに対するロックチェックにおけるレイテンシが改善される。
【０１６４】
なお、本実施形態では、ロックチェックに際して、Ｌ２インデックス及びＬ２ウェイの組、又は、Ｌ１インデックス及びＬ１ウェイの組を用いたロックチェックが例示される。これらは、ロックチェックの例示であり、ロックチェックに際しては、ロック対象情報に含まれる情報であれば、いかなる組合せがロックチェックに用いられてもよい。例えば、本実施形態では用いられていないコアを示す情報、又は、データの種別を示す情報がロックチェックに用いられてもよい。これらロックチェックに用いる情報は、処理される命令の性質によって、適宜選択されてよい。
【０１６５】
なお、図７は、図６Ａ及び図６Ｂにより示される動作例を簡略化して１つにまとめた図である。このようにして、ロック判定部２１６によりロックチェックが行われる。また、図８は、これまでに説明したロック対象のアドレスの登録処理とロックチェックの処理を簡略化して１つにまとめた図である。本実施形態に係るアドレスロック制御部２１３では、このようにして、ロック対象の登録とロックチェックが実行される。
【０１６６】
＜回路例＞
次に、図９を用いて、本実施形態に係るアドレスロック制御部２１３の回路例を説明する。図９は、アドレスロック制御部２１３の回路を例示する。図９に示されるとおり、本実施形態に係るアドレスロック制御部２１３は、マッチ回路２３０、エントリ選択回路２３１、セット／リセット回路２３２、入力選択回路２３３、及び、保持回路２３４を備える。図９に示されるとおり、マッチ回路２３０、エントリ選択回路２３１、セット／リセット回路２３２、及び、保持回路２３４は、コア毎に設けられている。
【０１６７】
マッチ回路２３０は、後述する保持回路２３４が保持する４つ分のエントリそれぞれに格納されたロック対象を示す情報と、パイプラインを流れる情報及びＬ２タグ２２１により得られる処理対象を示す情報とが、一致しているかどうか判定する。そして、マッチ回路２３０は、パイプライン上に、当該判定結果を流す。なお、ロック対象を示す情報とは、上述した、コアを示す情報、データの種別を示す情報、Ｌ２インデックス、Ｌ２ウェイ、Ｌ１インデックス、及び、Ｌ１ウェイ等である。そして、当該アクセス要求に係る処理の命令が通常のオーダーである場合、処理対象を示す情報は、Ｌ２インデックスとＬ２ウェイの組である。また、アクセス要求に係る処理の命令がリプレースオーダーである場合、処理対象を示す情報は、Ｌ１インデックス及びＬ１ウェイである。なお、マッチ回路２３０は、本実施形態のロック判定部２１６に相当する。
【０１６８】
エントリ選択回路２３１は、保持回路２３４が保持する各エントリのうちで空いているエントリの中から、次にデータが登録されるエントリを示す。エントリ選択回路２３１は、空きのエントリが複数存在する場合、次にデータが登録されるエントリを適当に決定する。そして、エントリ選択回路２３１は、決定したエントリを示すための信号を出力する。
【０１６９】
セット／リセット回路２３２は、保持部２３４が保持する各エントリのステータスを更新する。ステータスは、例えば、「１」で「有効」を表現し、「０」で「無効」を表現する。
【０１７０】
入力選択回路２３３は、パイプライン上に流れる情報から、後述する保持回路２３４に格納するための情報を選択する。保持回路２３４に格納する情報は、ロック対象情報である。入力選択回路２３３は、パイプライン上に流れる情報から、保持回路２３４に格納するロック対象情報に含まれる情報を選択し、選択した情報を保持回路２３４に渡す。これにより、入力選択回路２３３は、ロック対象を示す情報を取得する。入力選択回路２３３は、本実施形態のＬ１属性情報取得部２１４に相当する。
【０１７１】
パイプライン上に流れる情報には、上述した、リクエストコア、リクエストアドレス、リクエストオペコード、リクエストウェイ、Ｌ２タグ２２１の検索結果、及び、Ｌ１タグコピー２２３の検索結果が含まれる。入力選択回路２３３は、パイプライン上に流れる情報から、図３Ａ及び３Ｂで説明したようなロック対象を特定するための情報を選択し、選択した情報を保持回路２３４に渡す。
【０１７２】
なお、後述するとおり、図９において示される保持回路２３４において保持されるロック対象情報を格納するエントリには、ロック対象のコアを示す情報を格納するフィールドが存在しない。エントリがコア毎に用意されることで、ロック対象のコアが識別される。よって、図９により示される回路例においては、入力選択回路２３３は、図３Ａ及び３Ｂにより示される例とは異なり、ロック対象のコアを示す情報を取得しない。
【０１７３】
また、入力選択回路２３３は、パイプライン上の適当な位置に配置されてよい。例えば、入力選択回路２３３は、Ｌ２タグ２２１の検索結果及びＬ１タグコピー２２３の検索結果を取得可能なパイプライン上の適当な位置に配置される。
【０１７４】
保持回路２３４は、入力選択回路２３３から取得されるロック対象情報をエントリに格納する。図９では、４つ分のエントリが例示されている。図９に示されるとおり、保持回路２３４により保持されるエントリには、ステータスフィールド、Ｌ２インデックスフィールド、ＩＦステータスフィールド、ＩＦウェイフィールド、ＯＰステータスフィールド、及び、ＯＰウェイフィールドが含まれる。
【０１７５】
ステータスフィールドには、例えば、該当エントリの有効性を示す１ビットの情報が格納される。例えば、該当エントリが有効である場合、ステータスフィールドには「１」が格納される。他方、該当エントリが無効である場合、ステータスフィールドには「０」が格納される。
【０１７６】
Ｌ２インデックスフィールドには、例えば、１１ビットのＬ２インデックスが格納される。Ｌ２ウェイフィールドには、例えば、５ビットのＬ２ウェイが格納される。また、ＩＦウェイフィールド及びＯＰウェイフィールドには、例えば、２ビットのＬ１ウェイが格納される。
【０１７７】
ＩＦステータスフィールドには、例えば、当該エントリにおけるＩＦウェイフィールドの有効性を示す１ビットの情報が格納される。ＩＦウェイフィールドにＬ１ウェイが格納されている場合、ＩＦステータスフィールドには、有効を示す「１」が格納される。
【０１７８】
また、ＯＰステータスフィールドには、例えば、当該エントリにおけるＯＰウェイフィールドの有効性を示す１ビットの情報が格納される。ＯＰウェイフィールドにＬ１ウェイが格納されている場合、ＯＰステータスフィールドには、有効を示す「１」が格納される。
【０１７９】
なお、保持回路２３４において保持されるエントリは、本実施形態のアドレス保持部２１５に相当する。また、保持回路２３４は、パイプライン、Ｌ２タグ２２１、及び、Ｌ１タグコピー２２３からロック対象情報を取得する。当該取得に係る回路は、本実施形態のＬ１属性情報取得部２１４に相当する。
【０１８０】
＜具体例＞
次に、図１０及び１１を用いて、ある具体的な場面における本実施形態に係るアドレスロック制御部２１３の動作例を説明する。なお、図１０及び１１では、ステップを「Ｓ」と略称する。
【０１８１】
図１０及び１１において例示される具体的な場面では、説明を簡単にするため、２次キャッシュにおいてキャッシュミスヒットが生じないとする。ただし、本実施形態の適用場面はこのような場面に限定される訳ではない。２次キャッシュにおいてキャッシュミスヒットが生じてもよい。なお、キャッシュミスヒットが生じた場合は、メインメモリ４００からのデータ取得処理、及び、リプレースが生じる場合は、Ｌ２リプレースに係る処理が実行される。
【０１８２】
図１０は、第２コアがアドレス(Ａ)により指定されるデータを保持している場合における動作例を示す。なお、図１０により示される場面では、ロック対象が登録されていない状態から処理が開始している。
【０１８３】
ステップ１０００では、第１コアによって、アドレス(A)により指定されるデータのストア命令が発行される（ST(A)）。ストア命令が発行されると、２次キャッシュのアドレスロック制御部は、当該発行されたストア命令が実行可能か否か、ロックチェックする。当該ロックチェックは、図６Ａにより例示される。この時点においては、ロック対象は登録されていないので、第１コアによって発行されたストア命令はロックされない。よって、２次キャッシュでは、当該ストア命令は実行に移される。
【０１８４】
ステップ１００１では、実行に移されたストア命令に基づいたロック対象を登録する。当該登録処理は、図３Ａにより例示される。この時、少なくとも、ロック対象を示す情報として、Ｌ２インデックス、Ｌ２ウェイ、及び、Ｌ１ウェイが登録される。
【０１８５】
ステップ１００２では、２次キャッシュのリクエスト処理部は、１次キャッシュと２次キャッシュの間でコヒーレンシを保つため、第２コアの１次キャッシュに対して、アドレス(A)で指定されるデータの無効化、又は、書き戻しを要求する。２次キャッシュのリクエスト処理部は、２次キャッシュ内のＬ１タグコピーを参照することで、第２コアが該当するデータを保持していることを検知する。なお、第２コアでは、Ｌ１キャッシュ制御部によって、アドレス(A)で指定されるデータを格納するラインに対応するキャッシュタグ内のステータスが参照されることで、アドレス(A)で指定されるデータが更新された（dirty）か否か判定される。アドレス(A)で指定されるデータが更新されていた場合、２次キャッシュのリクエスト処理部からのアクセス要求に基づいて、第２コアでは、当該データの書き戻しが実行される。また、アドレス(A)で指定されるデータが更新されていなかった場合、第２コアでは、当該データの無効化が実行される。
【０１８６】
ステップ１００３では、第３コアによって、アドレス(A)により指定されるデータのロード命令が発行される（LD(A)）。この時点では、ステップ１００１において登録されたロックは未だ解除されていないものとする。つまり、ステップ１００３は、第１コアが発行したストア命令が実行されている間に発生した処理である。ロード命令が発行されると、２次キャッシュのアドレスロック制御部は、当該発行されたロード命令が実行可能か否か、ロックチェックする。当該ロックチェックは、図６Ａにより示される。図６Ａに示されるように、この場合、Ｌ２インデックス及びＬ２ウェイを用いたロックチェックが行われる。
【０１８７】
ここで、ステップ１０００において第１コアが発行したストア命令と、当該ロード命令は同じアドレス(A)に対する処理である。そのため、当該ロード命令により特定されるＬ２インデックス及びＬ２ウェイは、ロック対象として登録されているＬ２インデックス及びＬ２ウェイと一致する。よって、当該ストア命令の実行は、リトライ制御部によって、取り消され、再試行させられる。このようなリトライは、ステップ１００１において登録されたロックが解錠されるまで続く。
【０１８８】
図１１は、第２コアがアドレス(B)により指定されるデータを保持している場合における動作例を示す。なお、図１１により示される場面においても、ロック対象が登録されていない状態から処理が開始している。
【０１８９】
ステップ２０００では、第１コアによって、アドレス(B)により指定されるデータのストア命令が発行される（ST(B)）。ストア命令が発行されると、２次キャッシュのアドレスロック制御部は、当該発行されたストア命令が実行可能か否か、ロックチェックする。当該ロックチェックは、図６Ａにより例示される。この時点においては、ロック対象は登録されていないので、第１コアによって発行されたストア命令はロックされない。よって、当該ストア命令は実行に移される。
【０１９０】
次に、ステップ２００１では、実行に移されたストア命令に基づいたロック対象を登録する。当該登録処理は、図３Ａにより例示される。この時、少なくとも、ロック対象を示す情報として、Ｌ２インデックス、Ｌ２ウェイ、及び、Ｌ１ウェイが登録される。
【０１９１】
ステップ２００２では、２次キャッシュのリクエスト処理部は、１次キャッシュと２次キャッシュの間でコヒーレンシを保つため、第２コアの１次キャッシュに対して、アドレス(B)で指定されるデータの無効化、又は、書き戻しを要求する。この点は、図１０により示される動作と同様であるため、説明を省略する。
【０１９２】
ステップ２００３では、第１コアが発行したストア命令（ST(B)）が実行されている間に、第２コアによって、アドレス(A)により指定されるデータのロード命令が発行される（LD(A)）。ここで、アドレス(A)とアドレス(B)は、同一のＬ１インデックスであるとする。また、当該Ｌ１インデックスにより指定されるセット内のラインに空きがなく、Ｌ１リプレースが発生し、アドレス(B)により指定されるデータが格納されたラインが置き換え対象のラインとして選択されたとする。
【０１９３】
この場合、当該ロード命令は、Ｌ１リプレースに基づくアクセス要求に係る処理の命令である。当該ロード命令が発行されると、２次キャッシュのアドレスロック制御部は、Ｌ１リプレースを伴う当該ロード命令が実行可能か否か、ロックチェックする。当該ロックチェックは、図６Ｂにより示される。図６Ｂにより示されるように、この場合、コアからのリクエストに含まれるＬ１インデックス及びＬ１ウェイを用いたロックチェックが行われる。
【０１９４】
ここで、ステップ２００１において、ロック対象を示す情報として、アドレス(B)により指定されるデータを格納する第２コアのラインのＬ１インデックス及びＬ１ウェイが登録されている。そして、アドレス(B)により指定されるデータを格納する第２コアのラインは、ステップ２００３で発生したリプレース対象のラインである。そのため、ロック対象を示す情報として登録されたＬ１インデックス及びＬ１ウェイと、ステップ２００３で発生したリプレース対象のＬ１インデックス及びＬ１ウェイとは一致する。よって、当該Ｌ１リプレースを伴うロード命令は、リトライ制御部によって、取り消され、再試行させられる。このようなリトライは、ステップ２００１において登録されたロックが解錠されるまで続く。
【０１９５】
§４  本実施形態に係る作用及び効果
最後に、図１２Ａ、１２Ｂ、１３Ａ、及び、１３Ｂを用いて、本実施形態に係る作用及び効果を説明する。
【０１９６】
図１２Ａは、従来の方法によりロックしていた範囲を例示する。図１２Ｂは、本実施形態によりロックされる範囲を例示する。
【０１９７】
図１２Ａにより示されるとおり、フルサイズのアドレス、又は、Ｌ２インデックス及びＬ２ウェイの組でロック対象を指定した場合、２次キャッシュ上の該当ラインがロックされる。よって、２次キャッシュ上の当該ラインに対するアクセスは全てロックされる。これに対して、図１２Ｂにより示されるとおり、従来のアドレス情報に加えて、Ｌ１ウェイ、コアを示す情報、及び、データの種別情報等を更に追加して、ロック対象を指定した場合、例えば、１次キャッシュ上の該当ラインがロックされる。よって、その他のコアにおけるアクセスについてはロックされない。
【０１９８】
よって、本実施形態では、従来の方法と比べて、より詳細にロック対象範囲を設定することができる。これにより、本実施形態では、従来の方法に比べて、より並列処理の可能性を高めることができる。
【０１９９】
図１３Ａ及び１３Ｂを用いて、並列処理の可能性が高まることを説明する。図１３Ａ及び図１３Ｂは、第１コア及び第２コアにおいて、アドレスＡにより指定されるデータを格納するラインについてＬ１リプレースが発生した場合におけるロックとリプレースとの関係を例示する。図１３Ａは、従来の方法におけるロックとリプレースとの関係を例示する。また、図１３Ｂは、本実施形態におけるロックとリプレースとの関係を例示する。
【０２００】
従来の方法では、フルサイズのアドレス、又は、Ｌ２インデックス及びＬ２ウェイの組によりロック対象が表現される。ここで、第１コア及び第２コアで生じるリプレースの対象は共にアドレスＡである。よって、例えば、第２コアにおけるＬ１リプレースが先に処理されたとすると、当該第２コアにおけるＬ１リプレースに基づいて登録されたロックによって、第１コアにおけるＬ１リプレースが処理できなくなる。
【０２０１】
これに対して、本実施形態では、Ｌ１インデックス、Ｌ１ウェイ、コアを示す情報、及び、データの種別を示す情報等によりロック対象が表現される。よって、第２コアにおけるＬ１リプレースに基づいて実行されるロックから、第１コアにおけるＬ１リプレースを外すことができる。よって、本実施形態では、第２コアにおけるＬ１リプレースに係る処理が実行されている間であっても、第１コアにおけるＬ１リプレースに係る処理を実行することができる。したがって、本実施形態では、従来の方法に比べて、より並列処理の可能性を高めることができる。
【０２０２】
また、従来の方式では、Ｌ１リプレースの対象となるアドレスのロックチェックの際、Ｌ１タグコピーの検索を実行した後に、ロックチェックが行われていた。これに対して、本実施形態では、Ｌ１リプレースの対象となるアドレスのロックチェックの際、リクエストに含まれるＬ１インデックス及びＬ１ウェイでロックチェックが可能である。つまり、本実施形態では、ロックチェックにおいてＬ１タグコピーの検索を省略することができる。したがって、本実施形態によれば、Ｌ１リプレースの対象となるアドレスのロックチェックの際に生じる遅延を改善することができる。
【０２０３】
なお、図３Ａに示されるとおり、通常のオーダーにおいてロック対象のアドレスを登録する場合、Ｌ１タグコピーを検索する分遅延が生じる。しかしながら、ロック対象のアドレスを登録する処理は、ロックに係るアクセス要求の実行と並列で行われる処理である。そのため、当該遅延は、処理全体の処理速度にはほとんど影響を及ぼさない。これに対して、ロックチェックの処理は、ロックに係るアクセス要求の実行前に、実行される。そのため、ロックチェックの遅延は、処理全体の処理速度にそのまま影響を及ぼす。よって、本実施形態によれば、処理全体の処理速度も改善される。
【符号の説明】
【０２０４】
１００、１１０、１ｍ０  プロセッサコア
１０１、１１１、１ｍ１  命令制御部
１０２、１１２、１ｍ２  演算実行部
１０３、１１３、１ｍ３  １次キャッシュ
１０４    Ｌ１キャッシュ制御部
１０４ａ  アドレス変換部
１０４ｂ  リクエスト処理部
１０５    Ｌ１命令キャッシュ
１０５ａ  Ｌ１タグ
１０５ｂ  Ｌ１データ
１０５    Ｌ１オペランドキャッシュ
１０６ａ  Ｌ１タグ
１０６ｂ  Ｌ１データ
２００    ２次キャッシュ
２１０    Ｌ２キャッシュ制御部
２１１    リクエスト処理部
２１２    リトライ制御部
２１３    アドレスロック制御部
２１４    Ｌ１属性情報取得部
２１５    アドレス保持部
２１６    ロック判定部
２２０    Ｌ２キャッシュデータ部
２２１    Ｌ２タグ
２２２    Ｌ２データ
２２３    Ｌ１タグコピー
２３０    マッチ回路
２３１    エントリ選択回路
２３２    セット／リセット回路
２３３    入力選択回路
２３４    保持回路
【図１】
2013084315.tif 000003
【図２】
2013084315.tif 000004
【図３Ａ】
2013084315.tif 000005
【図３Ｂ】
2013084315.tif 000006
【図４】
2013084315.tif 000007
【図５】
2013084315.tif 000008
【図６Ａ】
2013084315.tif 000009
【図６Ｂ】
2013084315.tif 000010
【図７】
2013084315.tif 000011
【図８】
2013084315.tif 000012
【図９】
2013084315.tif 000013
【図１０】
2013084315.tif 000014
【図１１】
2013084315.tif 000015
【図１２Ａ】
2013084315.tif 000016
【図１２Ｂ】
2013084315.tif 000017
【図１３Ａ】
2013084315.tif 000018
【図１３Ｂ】
2013084315.tif 000019
【図１４】
2013084315.tif 000020
【図１５】
2013084315.tif 000021
【図１６】
2013084315.tif 000022
【図１７】
2013084315.tif 000023
【手続補正書】
【提出日】平成26年7月1日(2014.7.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第1のキャッシュメモリをそれぞれ有し、演算をそれぞれ行い、アクセス要求をそれぞ
れ出力する複数の演算処理部と、
前記複数の演算処理部から共有されるとともに前記複数の演算処理部がそれぞれ演算したデータを保持する第２のキャッシュメモリと、
前記複数の演算処理部の１つから前記第２のキャッシュメモリが保持するデータへのアクセス要求から、前記複数の演算処理部の前記１つに含まれる第１のキャッシュメモリにおける前記データの第１の格納先情報を含むロック対象情報を取得する取得部と、
前記アクセス要求に対する応答処理が完了するまでの間、前記ロック対象情報を保持する保持部と、
前記複数の演算処理部のいずれかが前記第２のキャッシュメモリに発行する、前記第１のキャッシュメモリが保持するデータをリプレースするリプレース要求に係る第２のキャッシュメモリへのアクセス要求に含まれる前記第１のキャッシュメモリにおける第２の格納先情報と前記保持部に保持されたロック対象情報に含まれる第１の格納先情報とに基づき、前記リプレース要求に係るアクセス要求を制御する制御部と、
を備える演算処理装置。
【請求項２】
前記第２の格納先情報が前記ロック対象情報に含まれる第１の格納先情報と一致したときに、前記制御部は、前記リプレース要求に係るアクセス要求に対する応答処理をキャンセルし、再試行する請求項１に記載の演算処理装置。
【請求項３】
前記ロック対象情報は、前記第１のキャッシュメモリのセットを識別するインデックス識別情報、前記セット内のウェイを識別するウェイ識別情報、前記演算処理部を識別する演算処理部識別情報および前記アクセス要求のデータの種別を示すデータ種別情報の少なくとも１つを含む請求項１に記載の演算処理装置。
【請求項４】
第１のキャッシュメモリをそれぞれ有し、演算をそれぞれ行い、メモリアクセス要求をそれぞれ出力する複数の演算処理部と、前記複数の演算処理部から共有されるとともに前記複数の演算処理部がそれぞれ演算したデータを保持する第２のキャッシュメモリとを有する演算処理装置の制御方法において、
前記演算処理装置が有する取得部が、前記演算処理部の１つから前記第２のキャッシュ
メモリが保持するデータへのアクセス要求から、前記複数の演算処理部の前記１つに含まれる第１のキャッシュメモリにおける前記データの第１の格納先情報を含むロック対象情報を取得し、
前記演算処理装置が有する制御部が、前記アクセス要求に対する応答処理が完了するまでの間、前記ロック対象情報を、前記演算処理装置が有する保持部に保持させ、
前記制御部が、前記複数の演算処理部のいずれかが前記第２のキャッシュメモリに発行する、前記第１のキャッシュメモリが保持するデータをリプレースするリプレース要求に係る第２のキャッシュメモリへのアクセス要求に含まれる前記第１のキャッシュメモリにおける第２の格納先情報と前記保持部に保持されたロック対象情報に含まれる第１の格納先情報とに基づき、前記リプレース要求に係るアクセス要求を制御する、
演算処理装置の制御方法。
【請求項５】
前記第２の格納先情報が前記ロック対象情報に含まれる第１の格納先情報と一致したときに、前記リプレース要求に係るアクセス要求に対する応答処理をキャンセルし、再試行することを含む、請求項４に記載の演算処理装置の制御方法。
【請求項６】
前記ロック対象情報は、前記第１のキャッシュメモリのセットを識別するインデックス識別情報、前記セット内のウェイを識別するウェイ識別情報、前記演算処理部を識別する演算処理部識別情報および前記アクセス要求のデータの種別を示すデータ種別情報の少なくとも１つを含む請求項４に記載の演算処理装置の制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５１
【補正方法】変更
【補正の内容】
【００５１】
一方、Ｌ1リプレースに基づくアクセス要求におけるリプレース対象アドレスについて
ロックチェックを実行する場合、アドレスロック制御部831は、Ｌ1タグコピー820から、
リプレース対象アドレスに対応するＬ2インデックス及びＬ2ウェイを取得する。具体的には、アドレスロック制御部831は、Ｌ1リプレースに基づくアクセス要求に含まれる情報に一致するラインをＬ1タグコピー820から検索する。なお、図１６におけるアドレス(A)及
びＬ1ウェイ(A)が、Ｌ1リプレースに基づくアクセス要求に含まれる情報である。そして
、アドレスロック制御部831は、当該検索の結果により示されるラインから、リプレース
対象アドレスに対応するＬ2インデックス及びＬ2ウェイを取得する。なお、図16におけるＬ2インデックス(B)及びＬ2ウェイ(B)が、リプレース対象アドレスに対応するＬ2インデ
ックス及びＬ2ウェイである。
【国際調査報告】
2013084315.tif 000024
2013084315.tif 000025
2013084315.tif 000026
2013084315.tif 000027