説明

キャッシュメモリ制御装置およびキャッシュメモリ制御方法

【課題】高速で物量の小さいキャッシュメモリ制御装置およびキャッシュメモリ制御方法を提供すること。
【解決手段】対象アドレスをL1キャッシュメモリに保持するプロセッサコアが存在するか否かを示すステータスコードをL2キャッシュタグ22に付す。第1処理判定部25は、L2キャッシュタグ22でヒットした場合にステータスコードを参照して所持コアに対する処理が必要であるか否かを判定する。第2処理判定部26は、所持コアに対する処理が必要である場合にL1キャッシュタグ21を用いて所持コアを特定し、リトライ判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、キャッシュメモリ制御装置およびキャッシュメモリ制御方法に関する。
【背景技術】
【0002】
従来、CPU(Central Processing Unit)は主記憶装置間に発生するデータ遅延問題の解決手段としてキャッシュメモリを利用している。キャッシュメモリは多段構造となっており、例えばレベル1(L1)キャッシュと、L1キャッシュを包含するレベル2(L2)キャッシュとから構成されている。また、L2キャッシュでは、L1キャッシュのタグの写しを保持し、これを利用することでL1キャッシュとL2キャッシュ間のコヒーレンシを維持している。L1キャッシュでは、オペランドのキャッシュと命令のキャッシュを個別に管理する命令オペランドセパレートキャッシュが知られている。
【0003】
また、複数のプロセッサコアを備えたCPUでは、各プロセッサコアがL1キャッシュを個別に備え、L2キャッシュをプロセッサコア間で共有する構成が知られている。この構成では、L2キャッシュはプロセッサコア数分のオペランドキャッシュタグの写しと命令キャッシュタグの写しを持つ。
【0004】
L1キャッシュはL2キャッシュに包含される関係であるから、L1キャッシュのブロックをL2キャッシュ上の位置によって特定できる。具体的には、L2インデックス分の情報があればよい。なお、L2キャッシュが複数のWAYを有する構成では、L2インデックス分の情報に加えてL2−WAYも管理する。
【0005】
L2インデックス分の情報については、L2インデックスの全てのビットを持つ必要はなく、L1インデックスと共通部分を除いた残りのビットをインデックス差分として持てばよい。このようにインデックス差分を用いることでL1キャッシュタグの写しの物量を大幅に削減できる。
【0006】
L1キャッシュタグの写しをL2インデックスとL2−WAYで管理する構成では、L1キャッシュタグの検索時に、L2インデックスとL2−WAYとの組み合わせを比較する。すなわち、L1キャッシュタグの写しから得られるL2インデックスとL2−WAYとの組み合わせが、L2ヒットしたL2インデックスとL2−WAY(L2−HIT−WAY)との組み合わせに一致した場合にL1ヒット(L1−HIT)となる。これは、L1−HITはL2−HIT−WAYが確定した後に判明することを意味する。
【0007】
したがって、L2キャッシュタグにL1キャッシュタグの情報を持たなければ、プロセッサコアにおける該当ブロックの情報を全てL1キャッシュタグの写しに頼るために、プロセッサコアに対する処理の判定が全てL1−HIT以降となりレイテンシが悪化する。
【0008】
L1キャッシュタグの写しを持たず、L1キャッシュタグの情報を全てL2キャッシュタグに持つことでマシンサイクルの高速化を実現する構成も知られている。しかし、L2キャッシュはL1キャッシュに比べてキャッシュの容量が大きいために、容量差の分だけ使用されない部分(L1キャッシュタグ情報)が発生する。よって、プロセッサコアの数が増えるほど、L2キャッシュタグで持つL1キャッシュタグの情報が増大し、資源効率が低下するという問題があった。
【0009】
また、複数のプロセッサコアでキャッシュを所持する場合に情報を圧縮することで、資源の有効利用とマシンサイクルの高速化を同時に実現可能にする構成も知られている。この構成では、L2キャッシュタグはL1でのキャッシュ状態を示すキャッシュ状態情報とコア番号とを管理用の情報として持つ。キャッシュ状態情報は、該当するデータのキャッシュを所持するプロセッサコアが存在するか、存在する場合には単独のプロセッサによる所持であるか、単独であればL1キャッシュのいずれのWAYに登録されたかを示す。また、コア番号は、該当するデータのキャッシュを所持するプロセッサコアが単独である場合にプロセッサコアを特定する情報である。
【0010】
L2キャッシュタグにL1でのキャッシュ状態を示すキャッシュ状態情報とコア番号とを持たせることで、キャッシュを所持するプロセッサコアが単独である場合には、L2キャッシュの検索でL1でのキャッシュ状態を特定することができる。一方、キャッシュを所持するプロセッサコアが複数である場合には、当該ブロックを所持するコアを特定できない。そのため、全てのプロセッサコアに対して無効化処理することで解決していた。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開平05−342101号公報
【特許文献2】特開2006−40175号公報
【特許文献3】国際公開第2007/094046号
【発明の概要】
【発明が解決しようとする課題】
【0012】
近年、消費電力の増大によりシングルコアの性能向上の限界をマルチコア化によって解決しようとする傾向にあり、プロセッサコア数が増加している。また、低消費電力化が求められ、徹底した物量削減が求められる。
【0013】
従来技術は、高速化のためにL2キャッシュタグにL1キャッシュタグの情報を持たせて処理の判定を解決しようとするものである。そのために、例えば複数のプロセッサコアで所持する、すなわち共有するブロックに対してストア命令があった場合は、全てのプロセッサコアに対する無効化処理が発生する。
【0014】
しかしながら、プロセッサコアの数が増大すると、実際にはキャッシュを所持してないプロセッサコアに対して不要な無効化処理が発生し、プロセッサの処理性能を低下させる要因となる。L2キャッシュタグに付加する管理情報を増加し、各プロセッサコアが所持しているか否かを示すビットを追加すれば、共有時にも不要な無効化処理は発生しない。しかし、L2キャッシュタグの物量が大きくなることは、資源の使用効率の悪化と消費電力の増大の点で問題となる。
【0015】
そのため、レンテンシを悪化させることなく、またプロセッサコアの数の増大に影響を受けることなくL2キャッシュタグの物量削減をおこなうことが課題となっていた。
【0016】
開示の技術は、上記に鑑みてなされたものであって、高速で物量の小さいキャッシュメモリ制御装置およびキャッシュメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【0017】
本願の開示するキャッシュメモリ制御装置およびキャッシュメモリ制御方法は、登録アドレスを第1キャッシュメモリに保持するプロセッサコアが存在するか否かを示すキャッシュ状態情報を付した第2キャッシュタグを検索する。検索対象アドレスと検索して得られた登録アドレスとが一致した場合は、開示の装置および方法は、キャッシュ状態情報に基づいて当該ブロックを所持するプロセッサコアに対して無効化あるいはデータ要求の必要があるか否かを判定する。判定の結果、当該ブロックを所持しているプロセッサコアに対して無効化あるいはデータ要求処理が必要である場合は、開示の装置および方法は、第1キャッシュタグの比較結果を用いて命令のリトライが必要であるか否かを判定する。
【発明の効果】
【0018】
本願の開示するキャッシュメモリ制御装置およびキャッシュメモリ制御方法は、高速で物量の小さいキャッシュメモリ制御装置およびキャッシュメモリ制御方法を得ることができるという効果を奏する。
【図面の簡単な説明】
【0019】
【図1】図1は、本実施例にかかるキャッシュメモリ制御装置の概要構成図である。
【図2】図2は、本実施例にかかるキャッシュメモリ制御装置を用いるCPUの構成図である。
【図3】図3は、キャッシュメモリ制御装置の比較構成図である。
【図4】図4は、アドレスからのインデックス作成について説明する説明図である。
【図5】図5は、L1キャッシュメモリへのキャッシュ状態をL2キャッシュタグに登録する構成について、開示の技術と比較する比較構成図である。
【図6】図6は、図5に示した比較例におけるステータスコード42およびコア番号43の具体例の説明図である。
【図7】図7は、本実施例にかかるL2キャッシュタグの説明図である。
【図8】図8は、ステータスコード52の具体例についての説明図である。
【図9】図9は、第1処理判定部25による判定処理の説明図である。
【図10】図10は、制御フラグを設けたL2キャッシュタグの説明図である。
【図11】図11は、制御フラグが有効である場合について説明する説明図である。
【図12】図12は、制御フラグを設けた場合の第1処理判定部25による判定処理の説明図である。
【図13】図13は、制御フラグsrcCore−L1D−VALを生成する論理回路の回路図である。
【図14】図14は、制御フラグsomeCore−L1I−HITを生成する論理回路の回路図である。
【図15】図15は、第1処理判定部25によるストア命令に対する判定を実現する回路図である。
【図16】図16は、要求コアに対する処理のリトライ判定を行なう論理回路の回路図である。
【図17】図17は、所持コアに対する処理のリトライ判定を行なう論理回路の回路図である。
【発明を実施するための形態】
【0020】
以下に、本願の開示するキャッシュメモリ制御装置およびキャッシュメモリ制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【0021】
図1は、本実施例にかかるキャッシュメモリ制御装置の概要構成図である。また、図2は、本実施例にかかるキャッシュメモリ制御装置を用いるCPUの構成図である。図3は、キャッシュメモリ制御装置の比較構成図である。
【0022】
図2に示したCPU1は、主記憶装置であるメモリ2と接続する。CPU1は、複数(図2では8つ)のプロセッサコアC0〜C7とL2キャッシュ10を有する。プロセッサコアC0は、命令制御部C0−2、演算部C0−4、レジスタC0−3、L1キャッシュC0−1を有する。
【0023】
命令制御部C0−2は、命令のデコードと処理順序制御を行なう処理部である。具体的には、命令制御部C0−2は、CPU1が処理する命令を記憶装置(メモリ/キャッシュ)から読み込み、解釈し、解釈結果を出力する。演算部C0−4は、演算を行う処理部である。具体的には、演算部C0−4は、命令の対象となるデータを記憶装置から読み込み、命令制御部C0−2によって解釈された命令に従って演算し、演算結果を出力する。レジスタC0−3は、命令制御部C0−2と演算部C0−4との間などでのデータのやり取りに使用される。
【0024】
L1キャッシュC0−1とL2キャッシュ10は、命令制御部C0−2および演算部C0−4の入出力データを一時的に保持するキャッシュメモリである。L1キャッシュC0−1は、プロセッサコアC0専用のキャッシュであり、オペランドのキャッシュと命令のキャッシュを個別に管理する命令オペランドセパレートキャッシュである。また、L2キャッシュ10は、プロセッサコアC0〜C7が共用するキャッシュメモリであり、オペランドと命令を区別せずにキャッシュする。
【0025】
L1キャッシュC0−1は、L2キャッシュ10に比して高速で容量が小さい。プロセッサコアC0は、速度と容量の異なるL1キャッシュC0−1とL2キャッシュ10とを階層的に使用する。具体的には、メモリ2に格納されたデータの一部をL2キャッシュ10に保持し、さらにL2キャッシュ10に保持した内容の一部をL1キャッシュC0−1に保持する。すなわち、L2キャッシュ10は、L1キャッシュC0−1を包含する。
【0026】
プロセッサコアC1〜C7は、プロセッサコアC0と同様にそれぞれ専用のL1キャッシュC1−1〜C7−1を有し、共用するL2キャッシュ10との間で段階的なキャッシュの使用をおこなう。また、プロセッサコアC1〜C7は、プロセッサコアC0と同様に命令制御部、演算部、レジスタを有するが図示および説明を省略する。
【0027】
L2キャッシュ10は、キャッシュデータ部11、検索部12および入出力制御部13を有する。キャッシュデータ部11は、キャッシュメモリの本体部であり、データの保持と読み出しを行なう。キャッシュにおけるデータの読み書きは所定の大きさのブロック単位で行なうことが一般的である。
【0028】
検索部12は、キャッシュデータ部11に登録されたデータのアドレス、データをブロック単位で管理する場合にはブロックのアドレスを管理し、L2キャッシュメモリを制御するキャッシュメモリ制御部である。入出力制御部13は、検索部12の検索結果と、キャッシュデータ部11からの読み出し結果とを用いて、メモリ2に対する入出力とプロセッサコアC0〜C7に対する入出力の制御を行なう。
【0029】
図1に示した本実施例にかかるキャッシュメモリ制御装置は、図2に示したL2キャッシュ10の検索部12として使用される。図1に示したように、キャッシュメモリ制御装置は、L1キャッシュタグ21、L2キャッシュタグ22、比較部23,24、第1処理判定部25および第2処理判定部26を有する。
【0030】
L1キャッシュタグ21は、プロセッサコアC0〜C7が有するL1キャッシュC0−1〜C7−1のタグの写しである。L1キャッシュC0−1〜C7−1は、命令オペランドセパレートキャッシュであるので、L1キャッシュタグ21は、L1キャッシュC0−1〜C7−1が保持する命令とオペランドとについてそれぞれ個別にタグを保持する。
【0031】
図1に示したタグTC0IはL1キャッシュC0−1の命令キャッシュのタグであり、タグTC0DはL1キャッシュC0−1のオペランドキャッシュのタグである。また、タグTC1IはL1キャッシュC1−1の命令キャッシュのタグであり、タグTC1DはL1キャッシュC1−1のオペランドキャッシュのタグである。同様に、タグTC7IはL1キャッシュC7−1の命令キャッシュのタグであり、タグTC7DはL1キャッシュC7−1のオペランドキャッシュのタグである。
【0032】
L2キャッシュタグ22は、L2キャッシュに登録したデータの登録アドレスを保持するとともに、L2キャッシュに登録したデータをL1キャッシュメモリに保持するプロセッサコアが存在するか否かを示すキャッシュ状態情報を登録アドレスと対応付けている。また、L2キャッシュタグ22は、WAY0〜WAY11を有する。
【0033】
L2キャッシュタグ22は、登録データのアドレスの一部をL2キャッシュ検索用のインデックスとする。L2キャッシュの検索用のインデックスをL2インデックスという。同じく、L1キャッシュタグ21は、登録データのアドレスの一部をL1キャッシュ検索用のインデックスとする。L1キャッシュの検索用のインデックスをL1インデックスという。
【0034】
図4は、アドレスからのインデックス作成について説明する説明図である。図4に示すように、データブロックのアドレスは、アドレス本体とラインサイズなどの付加情報を有する。本実施例では、このアドレス本体の一部をインデックスとする。
【0035】
既に述べたように、L1キャッシュはL2キャッシュに比して容量が小さいため登録可能なエントリ数も少ない。このため、L1キャッシュの検索に用いるL1インデックスは、L2キャッシュの検索に用いるL2インデックスに比して短くなる。また、L2キャッシュはL1キャッシュを包含するので、L2インデックスはL1インデックスと包含関係となる。
【0036】
L2キャッシュタグ22に登録したデータのアドレスと、検索対象となるデータのアドレスとを比較する場合には、L2キャッシュタグ22に入力するL2インデックスをキーにL2キャッシュタグ22を検索する。次いで、入力したL2インデックスと同一インデックスのL2キャッシュタグ22のエントリに登録されたアドレスと、検索対象アドレスとを比較する。アドレスのうちインデックス部分は同一であるので、アドレス本体の、L2インデックスよりも上位部分のアドレス同士を比較することとなる。
【0037】
L1キャッシュタグ21にアドレス全体を登録する構成では、L2キャッシュの検索と同様に、L1キャッシュタグ21に入力するL1インデックスをキーにL1キャッシュタグ21を検索し、L1キャッシュタグ21から得られたアドレスと検索対象のアドレスとをL1インデックスよりも上位部分について比較して、双方のアドレスが一致するかを判定する。
【0038】
ここで、L2キャッシュはL1キャッシュを包含するので、L1キャッシュに登録されたエントリは、L2キャッシュ上に存在することとなる。このため、L1キャッシュのエントリに対応するL2キャッシュのエントリを一意に特定することができれば、L2キャッシュがヒットしたか否かの判別結果を利用してL1キャッシュの検索を行なうことができる。
【0039】
L1キャッシュのエントリとL2キャッシュのエントリとを一意に対応付けるためには、L2インデックスとL1インデックスとの差分を用いる。また、L2キャッシュが複数のWAYを有する、すなわち、同一のL2インデックスについてWAY数分のエントリを登録可能であるならば、いずれのWAYであるかを指定する情報もL1キャッシュのエントリとL2キャッシュのエントリとの対応付けに用いる。
【0040】
したがって、L1キャッシュタグ21は、値がL1キャッシュに存在することを示すVAL、L2インデックスとL1インデックスとの差分であるインデックス差分、L2のウェイを指定するL2−WAYの情報をもてばよい。このように、L1キャッシュタグにアドレス全体を登録する代わりにVAL、インデックス差分、L2−WAYの情報をL1キャッシュタグに登録し、L2キャッシュのヒットを利用することで、L1キャッシュタグの物量を削減できる。
【0041】
図3に示した比較構成は、L2ヒットを利用してL1キャッシュを検索するキャッシュメモリ制御装置の構成の一例である。図3に示したキャッシュメモリ制御装置は、L1キャッシュタグ31、L2キャッシュタグ32、比較部33,34、処理判定部35を有する。
【0042】
L1キャッシュタグ31は、プロセッサコアC0〜C7が有するL1キャッシュC0−1〜C7−1のタグの写しであり、値が存在することを示すVAL、インデックス差分、L2−WAYの情報を持つ。また、L2キャッシュタグ32は、アドレス全体を登録したキャッシュであり、L1キャッシュを包含する。
【0043】
比較部33は、入力した検索対象アドレスとL2キャッシュタグ32に登録されているアドレスとを比較する処理部である。検索対象アドレスがL2パイプラインから入力されると、L2キャッシュタグ32は、L2インデックスが入力した検索対象アドレスと同一のエントリを出力する。比較部33は、L2インデックスより上位のアドレスについて検索対象アドレスとL2キャッシュタグ32に登録されていたエントリとを比較する。
【0044】
比較部33は、比較の結果、検索対象アドレスとエントリとが一致した場合、すなわち検索対象アドレスがL2キャッシュタグ32に登録されていた場合には、L2−HITをL2パイプラインに返す。このL2−HITは、検索対象アドレスがL2キャッシュメモリにキャッシュされていることを示す。
【0045】
また、比較部33は、比較の結果、検索対象アドレスとエントリとが一致した場合、当該アドレスとL2−HIT−WAYを比較部34に出力する。L2−HIT−WAYは、検索対象アドレスと同一のアドレスが登録されていたL2キャッシュタグのWAYを示す。
【0046】
検索対象アドレスがL2パイプラインから入力されると、L1キャッシュタグ31は、L1インデックスが検索対象アドレスと同一のエントリを出力する。L1キャッシュタグ31からの出力は、差分インデックスとL2−WAYを含む。
【0047】
比較部34は、検索対象アドレスとL1キャッシュメモリに登録されているアドレスとを比較する処理部である。比較部34は、比較部33からL2キャッシュタグ32でヒットしたアドレスとL2−HIT−WAYを受けている。比較部34は、L1キャッシュタグ31から受け取った差分アドレスを、比較部34から受け取ったL2キャッシュタグ31でヒットしたアドレスの差分に該当する部分と比較する。比較器34はまた、比較器33から受け取ったL2−HIT−WAYと、L1キャッシュタグ31から受け取ったL2−WAYとを比較する。比較部34は、L1キャッシュタグ31の差分アドレスがL2キャッシュタグ31でヒットしたアドレスの該当部分と一致し、且つL2−HIT−WAYとL2−WAYとが一致した場合に、L1−HITをL2パイプラインに返す。このL1−HITは、検索対象アドレスがL1キャッシュメモリにキャッシュされていることを示す。
【0048】
処理判定部35は、比較部33の出力(L2−HIT)と比較部34の出力(L1−HIT)とを用いて、検索対象アドレスに対する処理をリトライすべきか否かの判定を行なう。処理判定部35による判定は、比較部34の出力が必要である。これは、検索対象のアドレスをL1キャッシュメモリにキャッシュしているプロセッサコアが存在するか否かによって、リトライをすべきか否かが異なるためである。したがって、処理判定部35は、常に比較部34による比較の後に動作することとなる。
【0049】
このように、図3に示した比較構成では、L1キャッシュタグの物量を大きく削減することができるが、L2キャッシュタグでの検索後にL1キャッシュメモリでのキャッシュの有無が決定し、その後に処理判定することになるのでレイテンシが悪化する。
【0050】
L1キャッシュメモリへのキャッシュ状態をL2キャッシュタグに登録しておけば、L2キャッシュタグの検索によってL1キャッシュメモリへのキャッシュ状態を知ることができる。L1キャッシュメモリへのキャッシュ状態をL2キャッシュタグに登録する構成について、比較構成図を図5に示す。
【0051】
図5に示した比較構成図では、L2キャッシュタグ36は、アドレス41に加え、ステータスコード42、コア番号43を有する。ステータスコード42は、L1キャッシュメモリでのキャッシュ状態を示す管理用の情報である。また、ステータスコード42は、該当するアドレスのキャッシュを所持するプロセッサコアが存在するか否かを示す。ステータスコード42はまた、キャッシュを所持するプロセッサコアが存在する場合には単独のプロセッサによる所持であるか否か、また所持するプロセッサが単独であればL1キャッシュのいずれのWAYに登録されたかを示す。また、コア番号43は、該当するアドレスのキャッシュを所持するプロセッサコアが単独である場合にプロセッサコアを特定する管理用の情報である。
【0052】
図6は、図5に示した比較例におけるステータスコード42およびコア番号43の具体例の説明図である。図6に示した例は、2WAY命令オペランドセパレートキャッシュ、プロセッサコアが4つの場合の例であり、ステータスコード42が4ビット、コア番号43が2ビットのデータである。
【0053】
L1キャッシュメモリでのキャッシュ状態は、大別すると「INV」、「MOD」、「SHM」、「CLN」の4状態である。「INV」は、いずれのプロセッサコアもキャッシュしていない「無効」の状態である。「MOD」は、単一のプロセッサコアがL1キャッシュメモリに登録しており、かつL1キャッシュメモリとL2キャッシュメモリとでデータの内容が異なる、すなわちdirtyな状態である。この「MOD」は、データを書き換える際などに発生する。「SHM」は、複数のプロセッサコアがL1キャッシュメモリに登録してキャッシュ内容が共有された状態である。「CLN」は、単一のプロセッサコアがL1キャッシュメモリに登録しており、かつL1キャッシュメモリとL2キャッシュメモリとでデータの内容が同じ、すなわちcleanな状態である。「CLN」には、単一のプロセッサコアにおいて、命令キャッシュのみ、オペランドキャッシュのみ、命令・オペランドキャッシュで共有の3つの状態が存在する。
【0054】
ステータスコード42では、「INV」に対して「0000」を割り当てている。また、ステータスコード42では、「MOD」について登録先のWAYによって異なる値を割り当てている。具体的には、ステータスコード42では、オペランドWAY0にdirtyで登録されている状態に対して「0010」を割り当て、オペランドWAY1にdirtyで登録されている状態に対して「0011」を割り当てている。
【0055】
さらに、ステータスコード42では、「SHM」に対して「01−−」を割り当てている。これは、上位2ビットが「01」であれば、下位の2ビットがいずれの値であっても「SHM」を指すことを示す。
【0056】
ステータスコード42では、「CLN」について登録先がオペランドキャッシュである場合、命令キャッシュである場合、さらにそれぞれの場合におけるWAYの違いによって異なる値を割り当てている。
【0057】
具体的には、ステータスコード42では、命令WAY0にcleanで登録されている状態に対して「1000」を割り当て、命令WAY1にcleanで登録されている状態に対して「1001」を割り当てている。また、ステータスコード42では、オペランドWAY0にcleanで登録されている状態に対して「1010」を割り当て、オペランドWAY1にcleanで登録されている状態に対して「1011」を割り当てている。
【0058】
同様にステータスコード42では、命令WAY0、オペランドWAY0にcleanで登録されている状態に対して「1100」を割り当て、命令WAY0、オペランドWAY1にcleanで登録されている状態に対して「1101」を割り当てている。そして、ステータスコード42では、命令WAY1、オペランドWAY0にcleanで登録されている状態に対して「1110」を割り当て、命令WAY1、オペランドWAY1にcleanで登録されている状態に対して「1111」を割り当てている。なお、ステータスコード42は「0001」を予備、すなわちリザーブとして空けている。
【0059】
コア番号43は、プロセッサコアのいずれか一つを特定する。単一のプロセッサコアが対象のアドレスをキャッシュしている場合は、コア番号43が有効となり、L1キャッシュに対象アドレスを登録したプロセッサコアとWAYなどを特定できる。一方、複数のコアでキャッシュを所持する場合はSHMとして情報を圧縮しているので、当該アドレスをL1キャッシュに登録しているプロセッサコアを特定することはできない。そのため、例えば、ストア命令の対象アドレスがSHMであった場合は、全てのプロセッサコアに対して無効化処理する。
【0060】
図5,図6に示した比較例は、L2キャッシュタグにL1キャッシュの情報を持たせ、L2キャッシュタグの検索でL2キャッシュとL1キャッシュの状態を求めることで処理の判定を高速化するものである。
【0061】
図5,図6に示した比較例は、プロセッサコアの数が増大すると、実際にはキャッシュを所持してないプロセッサコアに対して不要な無効化処理が発生し、プロセッサの処理性能を低下させる要因となる。L2キャッシュタグに付加する管理情報を増加し、各プロセッサコアがキャッシュを所持しているか否かを示すビットを追加すれば、キャッシュ共有時にも不要な無効化処理は発生しない。しかし、L2キャッシュタグの物量が大きくなることは、資源の使用効率の悪化と消費電力の増大の点で問題となる。
【0062】
本実施例にて開示する構成は、レンテンシを悪化させることなく、またプロセッサコアの数の増大に影響を受けることなくL2キャッシュタグの物量削減をおこなった構成である。
【0063】
図1に戻り、本実施例にて開示するキャッシュメモリ制御装置の構成について説明する。既に説明したように、L1キャッシュタグ21は、プロセッサコアC0〜C7が有するL1キャッシュC0−1〜C7−1のタグの写しであり、図3に示した比較構成と同様に値が存在することを示すVAL、インデックス差分、L2−WAYの情報を持つ。
【0064】
また、L2キャッシュタグ22は、アドレス全体を登録したキャッシュであり、L1キャッシュを包含する。本実施例のL2キャッシュタグ22は、図7に示したようにアドレス51に加えてステータスコード52を有する。図8は、ステータスコード52の具体例についての説明図である。
【0065】
ステータスコード52は、L1キャッシュメモリでの4つのキャッシュ状態、すなわち「INV」、「CLN」、「SHM」、「MOD」を2ビットのデータで示す。具体的には、ステータスコード52では、いずれのプロセッサコアもキャッシュしていない無効の状態である「INV」に対して「00」を割り当てている。
【0066】
また、ステータスコード52では、単一のプロセッサコアがL1キャッシュメモリに登録しており、かつL1キャッシュメモリとL2キャッシュメモリとでデータの内容が同じcleanな状態である「CLN」に対して「01」を割り当てている。
【0067】
そして、ステータスコード52では、複数のプロセッサコアがL1キャッシュメモリに登録してキャッシュ内容が共有された状態である「SHM」に対して「10」を割り当てている。また、ステータスコード52では、単一のプロセッサコアがL1キャッシュメモリに登録しており、かつL1キャッシュメモリとL2キャッシュメモリとでデータの内容が異なる、すなわちdirtyな状態である「MOD」に対して「11」を割り当てている。
【0068】
比較構成のステータスコード42とは異なり、図8に示したステータスコード52はプロセッサコアの数やWAYの数に依存しない。このため、プロセッサコアの数やWAYの数が増えてもステータスコード42は2ビットでよい。
【0069】
図1に示した比較部23は、外部から供給される検索対象アドレスと、L2キャッシュタグ22に登録されているアドレスとを比較する処理部である。検索対象アドレスがL2パイプラインから入力されると、L2キャッシュタグ22は、L2インデックスが検索対象アドレスと同一のエントリを出力する。比較部23は、L2インデックスより上位のアドレスについて検索対象アドレスとL2キャッシュタグ22に登録されていたエントリとを比較する。
【0070】
比較部23は、比較の結果、検索対象アドレスとL2キャッシュタグ22のエントリとが一致した場合、すなわち検索対象アドレスがL2キャッシュタグ22に登録されていた場合には、L2−HITとステータスコード52の値をL2パイプラインに返す。L2−HITは、検索対象アドレスがL2キャッシュメモリにキャッシュされていることを示す。さらに、後述する制御フラグとしてsomeCore−L1I−HITを用いる場合は、比較部23は、someCore−L1I−HITをL2パイプラインに返す。someCore−L1I−HITは、全てのプロセッサコアの命令キャッシュタグのヒットのORである。
【0071】
また、比較部23は、比較の結果、検索対象アドレスとエントリとが一致した場合に当該アドレスとL2−HIT−WAYを比較部24に出力する。L2−HIT−WAYは、検索対象アドレスと同一のアドレスが登録されていたL2キャッシュのWAYを示す。
【0072】
検索対象アドレスがL2パイプラインから入力されると、L1キャッシュタグ21は、L1インデックスが検索対象アドレスと同一のエントリを出力する。L1キャッシュタグ21からの出力は、差分インデックスとL2−WAYを含む。
【0073】
比較部24は、検索対象アドレスとL1キャッシュメモリに登録されているアドレスとを比較する処理部である。比較部24は、比較部23からL2キャッシュタグ22でヒットしたアドレスとL2−HIT−WAYを受けている。比較部24は、L1キャッシュタグ21の差分アドレスをL2キャッシュタグ22でヒットしたアドレスの該当部分と比較し、またL2−HIT−WAYとL2−WAYとも比較する。比較部24は、L1キャッシュタグ21の差分アドレスがL2キャッシュタグ22でヒットしたアドレスの該当部分と一致し、且つL2−WAYについても一致した場合に、L1−HITをL2パイプラインに返す。このL1−HITは、検索対象アドレスがL1キャッシュメモリにキャッシュされていることを示す。
【0074】
第1処理判定部25は、比較部23の出力を用いて、当該ブロックを所持するプロセッサコアに対して無効化あるいはデータ要求の必要があるか否かを判定する。第1処理判定部25による判定は比較部24の出力を用いない。
【0075】
図9は、第1処理判定部25による判定処理の説明図である。既に説明したようにステータスコード52の値が「INV」であれば、アドレスをキャッシュしているプロセッサコア、いわゆる所持コアは存在しない。また、ステータスコード52の値が「CLN」であれば、所持コアは単独であり、データはcleanである。そして、ステータスコード52の値が「SHM」であれば、所持コアは複数であり、データはcleanである。また、ステータスコード52の値が「MOD」であれば所持コアは単独であり、データはdirtyである。
【0076】
プロセッサコアが出力した命令がロード命令、すなわち「LD」であり、オペランドのステータスコードが「INV」、「CLN」あるいは「SHM」であれば、所持コアに対する処理が必要ないので要求元のプロセッサコア、すなわち要求コアに即応答が可能である。一方、プロセッサコアが出力した命令がロード命令であり、オペランドのステータスコードが「MOD」であれば、所持コアに対してデータを要求し、cleanにしてプロセッサコア間でデータを共有する処理が求められる。
【0077】
また、プロセッサコアが出力した命令がストア命令、すなわち「ST」である場合は、オペランドのステータスコードが「INV」であれば所持コアに対する処理が必要ないので、要求コアに即応答が可能である。一方、プロセッサコアが出力した命令がストア命令であり、オペランドのステータスコードが「CLN」あるいは「SHM」であれば、所持コアに対するキャッシュの無効化処理が求められる。そして、プロセッサコア出力した命令がストア命令であり、オペランドのステータスコードが「MOD」であれば、所持コアに対するキャッシュの無効化処理とデータの要求が求められる。
【0078】
このように第1処理判定部25は、所持コアへの処理が必要かどうかの判定を行なう。第1処理判定部25の判定では、実際に所持コアがいずれのプロセッサコアであるかは識別できない。第1処理判定部25による判定の結果、所持コアへの処理が必要なく、要求コアへの処理が可能であれば、要求コアがいずれのプロセッサコアであるかは既知の情報であるので、L1キャッシュタグの検索結果を待つことなくリトライの有無を判定可能である。
【0079】
一方、第1処理判定部25による判定の結果、所持コアへの処理が必要な場合は、第2処理判定部26が所持コアを特定した上で最終的なリトライ有無を判定する。第2処理判定部26は、所持コアを比較部24の出力であるL1−HITによって特定できる。このため、第2処理判定部26は、プロセッサコア毎のリソース数管理など各プロセッサコアのリトライ要因をL1−HITに基づいて選択し、所持コアに対して処理が続行できるか、即ちリトライ有無を判定することができる。
【0080】
このように本実施例にかかるキャッシュメモリ制御装置は、所持コアに対する処理が必要でなければL1キャッシュタグの検索結果を待つことなく、すなわちレイテンシを悪化させること無く高速にリトライの有無を判定することができる。また、L2キャッシュタグ22に追加する情報はプロセッサコア数やWAY数に依存しないので、大規模なシステムであってもL2キャッシュタグの物量を削減することができる。
【0081】
つぎに、開示のキャッシュメモリ制御装置の変形例について説明する。プロセッサコアによっては、ストア命令を発行する際に自身のオペランドキャッシュに共有型でキャッシュしているか否かによって異なる2種類のストア命令を発行するものがある。
【0082】
ストア命令の要求コアがオペランドキャッシュに共有型でキャッシュしている場合は、他のプロセッサコアが同一のアドレスをキャッシュしている可能性がある。このため、要求コアは、L2キャッシュに問い合わせを行なう。L2キャッシュでの判定の結果、要求コアのオペランドキャッシュのみでしか所持していないことが判明した場合は、性能上の理由から不要な無効化をすることなくストアを実行可能として要求コアに応答することが望ましい。
【0083】
L2キャッシュメモリから見ると、要求コアが自身にキャッシュした状態で発行したストア命令が「CLN」であれば、要求コアが所持コアであり、かつ要求コアの命令キャッシュが所持(共有)していなければ、即ち要求コアのオペランドキャッシュのみが所持しているならば、所持コアに対する無効化を行なう必要は無い。一方、要求コアが自身にキャッシュしていない状態で発行したストア命令が「CLN」であれば、要求コアではないプロセッサコアが所持コアとなる。
【0084】
このため、L2キャッシュでの動作上の区別と、プロトコルチェック強化の観点から、要求コアがオペランドキャッシュに所持しない状態で発行するストア命令と、要求コアのオペランドキャッシュが共有型で所持する状態で発行するストア命令を区別することが好ましい。以降、要求コアのオペランドキャッシュで所持しない状態で発行されるストア命令をST1、要求コアのオペランドキャッシュが共有型で所持する状態で発行するストア命令をST2として説明する。
【0085】
図9に示した第1処理判定部25の動作では、ストア命令ST1とストア命令ST2を区別せず、ステータスコード52がCLNの場合は所持コアが要求コアであっても無効化処理を行なうこととしていた。
【0086】
一方、変形例ではストア命令ST1とST2とを区別して制御するため、図10に示すようにL2キャッシュタグに制御フラグ53を追加して設ける。この制御フラグ53は、someCore−L1I−HITの情報を格納する1ビットのデータである。
【0087】
someCore−L1I−HITは、全てのプロセッサコアの命令キャッシュタグのヒットのORで、L2キャッシュタグ22の更新時に、L1キャッシュタグ21から得られる全プロセッサコアの命令キャッシュタグのヒットのORで更新して管理する。この制御フラグ53はORなので、コア数に依存せず1ビットでよい。
【0088】
図11に示すように、ステータスコード52には変化が無く、ステータスコードの値が「CLN」である場合に、someCore−L1I−HITが有効である。
【0089】
図12は、someCore−L1I−HITを使用する場合の第1処理判定部25による判定処理の説明図である。ロード命令とストア命令ST1の場合の処理判定は図9の場合と同様である。図9の例と処理が変化するのは、ストア命令ST2においてステータスコード52が「CLN」のケースである。
【0090】
ストア命令ST2においてステータスコード52が「CLN」であることは、何れかのプロセッサコアが単独で所持していることを示す。したがって、ストア命令ST2でステータスコード52が「CLN」である状況は、要求コアのオペランドキャッシュが共有型で所持しているケースも含む。要求コアのオペランドキャッシュが共有型で所持しているケース以外は図9の処理判定と同一の動作となる。
【0091】
図12に示した処理判定では、ストア命令ST2でステータスコード52が「CLN」の場合、既に説明した制御フラグsomeCore−L1I−HITに加え、制御フラグsrcCore−L1D−VALを使用する。制御フラグsrcCore−L1D−VALは、ヒット情報ではない。制御フラグsrcCore−L1D−VALは、要求元コアのオペランドキャッシュに、対象アドレスとL1インデックスが同一のエントリが登録されているかを示すVALID情報である。このため、図12の判定処理ではアドレスの比較を必要とせず、要求コアのL1キャッシュタグの写しから直ちに判定結果を得ることができる。
【0092】
ストア命令ST2が発行され、L2キャッシュメモリでの状態がCLNであるならば、所持コアは要求コアである。この場合、要求コアにおいて、命令キャッシュのみ、オペランドキャッシュのみ、あるいは命令・オペランドキャッシュで共有の3つの所持状態がある。加えて、制御フラグsrcCore−L1D−VALが「1」であれば、先の3つの所持状態は、オペランドキャッシュのみ、命令・オペランドキャッシュで共有の2つの所持状態の何れかとなり、ストア命令ST2のオペランドとL1インデックスが同一のエントリがL1キャッシュに登録されていることになる。
【0093】
L1キャッシュでは、これから登録しようとするWAYに対して同時期に同じWAYを対象としたリプレース処理や、新規登録処理は発生しない。このため、L1オペランドキャッシュで共有型にヒットしてストア命令ST2が発行され、srcCore−L1D−VALが「1」であれば、ストア命令のオペランドはL1キャッシュメモリに登録済みである。
【0094】
言い換えれば、ストア命令ST2でsrcCore−L1D−VALが「1」であれば、比較部24による比較を行なうことなくオペランドキャッシュのヒットが確定する。
【0095】
さらに制御フラグsrcCore−L1D−VALが「1」である場合に、someCore−L1I−HITが「1」であれば、要求コアの命令・オペランドキャッシュで共有の状態であると特定される。この場合、要求コアに対して命令キャッシュの無効化を行なうことが求められる。
【0096】
そして制御フラグsrcCore−L1D−VALが「1」である場合に、someCore−L1I−HITが「0」であれば、要求コアのオペランドキャッシュのみで所持していると特定される。この場合、所持コアに対する処理が必要ないので要求元のプロセッサコア、すなわち要求コアに即に応答が可能である。
【0097】
このように、ステータスコードがCLNである、即ち単一のプロセッサコアでキャッシュされていることと、制御フラグsomeCore−L1I−HIT,srcCore−L1D−VALを用いる事で、第1処理判定で判定可能なケースを増やすことができる。したがって、新たな制御フラグsomeCore−L1I−HITを1bit追加することで、より詳細な判定が可能となり、レイテンシを向上することができる。
【0098】
図13は、制御フラグsrcCore−L1D−VALを生成する論理回路の具体例である。AND回路60は、要求コアがプロセッサコアC0であり、かつCore0−L1D−VALの値が「1」である場合に「1」を出力する。また、AND回路61は、要求コアがプロセッサコアC1であり、かつCore1−L1D−VALの値が「1」である場合に「1」を出力する。
【0099】
プロセッサコアC2〜C7についても同様にAND回路62〜67が対応する。AND回路62〜66については図示を省略するが、AND回路67は、要求コアがプロセッサコアC7で、かつCore7−L1D−VALの値が「1」である場合に「1」を出力する。このAND回路60〜67の出力をOR回路68にかけたものが制御フラグsrcCore−L1D−VALとなる。
【0100】
図14は、制御フラグsomeCore−L1I−HITを生成する論理回路の具体例である。Core0−L1I−HITからCore7−L1I−HITまでの信号をOR回路69に入力することで、someCore−L1I−HITが得られる。
【0101】
図15は、第1処理判定部25によるストア命令に対する判定を実現する回路の説明図である。図15に示したように、AND回路70は、srcCore−L1D−VALが「1」、ステータスコードが「CLN」、someCore−L1I−HITが「0」の時に「1」を出力する。OR回路71は、ステータスコードが「INV」であるか、もしくはAND回路70が「1」を出力している場合に「1」を出力する。
【0102】
そして、AND回路72は、命令がストアSTであり、OR回路71の出力が「1」である場合に「1」を出力する。AND回路72の出力が「1」であることは、要求コアに対する処理を行なうべきであることを意味する。
【0103】
また、AND回路73は、命令がストアSTであり、OR回路71の出力が「0」である場合に「1」を出力する。AND回路73の出力が「1」であることは、所持コアに対する処理を行なうべきであることを意味する。
【0104】
図16は、要求コアに対する処理のリトライ判定を行なう論理回路の具体例である。図16に示した回路は、第2処理判定部26の内部に設けられる。図16に示したように、AND回路80は、要求コアがプロセッサコアC0であり、かつCore0の資源がBUSYである場合に「1」を出力する。また、AND回路81は、要求コアがプロセッサコアC1であり、かつCore1の資源がBUSYである場合に「1」を出力する。
【0105】
プロセッサコアC2〜C7についても同様にAND回路82〜87が対応する。AND回路82〜86については図示を省略するが、AND回路87は、要求コアがプロセッサコアC7であり、かつCore7の資源がBUSYである場合に「1」を出力する。
【0106】
OR回路88は、AND回路80〜87のいずれかが「1」であれば「1」を出力する。そして、AND回路89は、処理が要求コアに対する処理であり、かつOR回路88の出力が「1」である場合に「1」を出力する。AND回路89の出力が「1」であることは、リトライが必要であることを意味する。
【0107】
図17は、所持コアに対する処理のリトライ判定を行なう論理回路の具体例である。図17に示した回路は、第2処理判定部26の内部に設けられる。図17に示したように、AND回路90は、Core0−L1−HITが「1」であり、かつCore0の資源がBUSYである場合に「1」を出力する。また、AND回路91は、Core1−L1−HITが「1」であり、かつCore1の資源がBUSYである場合に「1」を出力する。
【0108】
プロセッサコアC2〜C7についても同様にAND回路92〜97が対応する。AND回路92〜96については図示を省略するが、AND回路97は、Core7−L1−HITが「1」であり、かつCore7の資源がBUSYである場合に「1」を出力する。
【0109】
OR回路98は、AND回路90〜97のいずれかが「1」であれば「1」を出力する。そして、AND回路99は、処理が所持コアに対する処理であり、かつOR回路98の出力が「1」である場合に「1」を出力する。AND回路99の出力が「1」であることは、リトライが必要であることを意味する。
【0110】
以上説明してきたように本実施例にかかるキャッシュメモリ制御装置およびキャッシュメモリ制御方法では、対象アドレスをL1キャッシュメモリに保持するプロセッサコアが存在するか否かを示すステータスコードをL2キャッシュタグに付す。そして、第1処理判定部によって所持コアに対する処理が必要であるか否かを判定し、所持コアに対する処理が必要である場合にL1キャッシュタグを用いて所持コアを特定する。
【0111】
したがって、本実施例にかかるキャッシュメモリ制御装置は、所持コアに対する処理が必要でなければL1キャッシュタグの検索結果を待つことなくリトライの有無を判定することができる。また、所持コアに対する処理が必要である場合も、従来ではST2の例で示したような正確な判定をするためにはL1キャッシュヒットを待たないと判定できなかったが、L1キャッシュヒットを待たずとも判定することができる。そのため、コア数などの増大に影響を受けることなく、またL1キャッシュタグとL2キャッシュタグの物量を削減しつつレイテンシを向上することかできる。
【符号の説明】
【0112】
1 CPU
2 メモリ
10 L2キャッシュ
11 キャッシュデータ部
12 検索部
13 入出力制御部
21,31 L1キャッシュタグ
22,32,36 L2キャッシュタグ
23,24,33,34 比較部
25 第1処理判定部
26 第2処理判定部
35 処理判定部
41,51 アドレス
42,52 ステータスコード
43 コア番号
53 制御フラグ
60〜67,70,72,73,80〜87,90〜97,99 AND回路
68,69,71,88,98 OR回路
C0〜C7 プロセッサコア
C0−1〜C7−1 L1キャッシュ
C0−2 命令制御部
C0−3 レジスタ
C0−4 演算部

【特許請求の範囲】
【請求項1】
各々第1キャッシュメモリを有する複数のプロセッサコアで共用される第2キャッシュメモリを制御するキャッシュメモリ制御装置であって、
前記第2キャッシュメモリに登録された情報の登録アドレスの一部を第2キャッシュインデックスとし、第2キャッシュメモリの登録アドレスと、当該登録アドレスに登録された情報を前記第1キャッシュメモリに保持するプロセッサコアが存在するか否かを示すキャッシュ状態情報とを対応付けて保持する第2キャッシュタグと、
検索対象アドレスに含まれる第2キャッシュインデックスをキーに前記第2キャッシュタグを検索して得られた登録アドレスと前記検索対象アドレスとを比較する第1の比較部と、
前記第1の比較部による比較の結果、前記検索対象アドレスと前記登録アドレスとが一致した場合に、前記キャッシュ状態情報に基づいてブロックを所持するプロセッサコアに対して無効化あるいはデータ要求の必要があるか否かを判定する第1の処理判定部と、
前記複数のプロセッサコアが各々の第1キャッシュメモリに保持するアドレスについて、前記第1キャッシュメモリの検索に用いる第1キャッシュインデックスと前記第2キャッシュインデックスとのインデックス差分と、前記第1キャッシュインデックスとを対応付けて保持する第1キャッシュタグと、
前記検索対象アドレスの第1キャッシュインデックスをキーに前記第1キャッシュタグを検索して得られたインデックス差分と前記検索対象アドレスの第1キャッシュインデックスとの組み合わせを、前記検索対象アドレスの第2キャッシュインデックスと比較する第2の比較部と、
前記第1の処理判定部による判定の結果、ブロックを所持するプロセッサコアに対して無効化あるいはデータ要求の必要である場合に、前記第2の比較部による比較結果を用いて命令のリトライが必要であるか否かを判定する第2の処理判定部と
を備えたことを特徴とするキャッシュメモリ制御装置。
【請求項2】
前記第2キャッシュタグは前記キャッシュ状態情報として、前記検索対象アドレスを前記第1キャッシュメモリに保持するプロセッサコアが存在しない状態、単一のプロセッサコアが前記検索対象アドレスを前記第2キャッシュメモリと同一の内容で前記第1キャッシュメモリに保持している状態、単一のプロセッサコアが前記検索対象アドレスを前記第1キャッシュメモリに保持して更新中である状態、複数のプロセッサコアが前記検索対象アドレスを共有している状態の4つの状態のいずれかを示す2ビットデータを保持することを特徴とする請求項1に記載のキャッシュメモリ制御装置。
【請求項3】
前記第1処理判定部は、前記複数のプロセッサコアのいずれかがロード命令を発行した場合に、当該ロード命令の対象となるアドレスが単一のプロセッサコアで所持されており、かつ更新された状態であるなら、所持するコアにデータを要求する処理が必要であると判定し、前記複数のプロセッサコアのいずれかがストア命令を発行した場合に、当該ストア命令の対象となるアドレスを前記第1キャッシュメモリに保持するプロセッサコアが存在しなければ命令要求元のプロセッサコア以外のプロセッサコアに対する処理が不要であると判定することを特徴とする請求項1または2に記載のキャッシュメモリ制御装置。
【請求項4】
前記第2キャッシュタグは、前記登録アドレスについて当該登録アドレスを前記複数のプロセッサコアのうち少なくともいずれか一つが命令キャッシュとして保持しているか否かを示す制御情報をさらに対応付けて保持し、第1処理判定部は、前記複数のプロセッサコアのいずれかが自身の第1キャッシュメモリに保持するアドレスを指定してストア命令を発行した場合に、当該ストア命令の対象となるアドレスについて、いずれのプロセッサコアも命令キャッシュとして保持していないことを前記制御情報が示し、単一のプロセッサコアが前記第2キャッシュメモリと同一の内容で前記第1キャッシュメモリに保持中であることを前記キャッシュ状態情報が示し、前記第1キャッシュタグに値が登録されているならば、命令要求元のプロセッサコア以外のプロセッサコアに対する処理が不要であると判定することを特徴とする請求項1から3のいずれか一つに記載のキャッシュメモリ制御装置。
【請求項5】
前記第2キャッシュタグは複数のWAYを有し、前記第1キャッシュタグは前記複数のプロセッサコアが第1キャッシュメモリに保持するアドレスについて、当該アドレスを登録した前記第2キャッシュタグのWAYをさらに対応付けることを特徴とする請求項1から4のいずれか一つに記載のキャッシュメモリ制御装置。
【請求項6】
各々第1キャッシュメモリを有する複数のプロセッサコアで共用される第2キャッシュメモリを制御するキャッシュメモリ制御方法であって、
前記第2キャッシュメモリに登録された登録アドレスの一部を第2キャッシュインデックスとし、前記登録アドレスと当該登録アドレスを前記第1キャッシュメモリに保持するプロセッサコアが存在するか否かを示すキャッシュ状態情報とを対応付けた第2キャッシュタグに対して検索対象アドレスの第2キャッシュインデックスをキーに検索する第2キャッシュタグ検索ステップと、
前記第2キャッシュタグ検索ステップによって得られた登録アドレスと前記検索対象アドレスとを比較する第1の比較ステップと、
前記第1の比較ステップによる比較の結果、前記検索対象アドレスと前記登録アドレスとが一致した場合に、前記キャッシュ状態情報に基づいて当該ブロックを所持するプロセッサコアに対して無効化あるいはデータ要求の必要があるか否かを判定する第1の処理判定ステップと、
前記複数のプロセッサコアが前記第1キャッシュメモリに保持するアドレスについて、前記第1キャッシュメモリでの検索に用いる第1キャッシュインデックスと前記第2キャッシュインデックスとのインデックス差分と前記第1キャッシュインデックスとを対応付けた第1キャッシュタグに対して前記検索対象アドレスの第1キャッシュインデックスをキーに検索を行なう第1キャッシュタグ検索ステップと、
前記第1キャッシュタグを検索して得られたインデックス差分と前記検索対象アドレスの第1キャッシュインデックスとの組み合わせを前記検索対象アドレスの第2キャッシュインデックスと比較する第2の比較ステップと、
前記第1の処理判定ステップによる判定の結果、当該ブロックを所持するプロセッサコアに対して無効化あるいはデータ要求が必要である場合に、前記第2の比較ステップによる比較結果を用いて命令のリトライが必要であるか否かを判定する第2の処理判定ステップと
を含んだことを特徴とするキャッシュメモリ制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2011−65574(P2011−65574A)
【公開日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2009−217727(P2009−217727)
【出願日】平成21年9月18日(2009.9.18)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】