(57)【要約】【課題】不要なシノニム処理を回避する。【解決手段】演算処理装置は，仮想アドレスで検索される１次キャッシュタグ及び１次キャッシュデータメモリと，キャッシュ制御を行う１次キャッシュ制御部とを有する１次キャッシュメモリ部と，物理アドレスで検索される２次キャッシュタグ及び２次キャッシュデータメモリと，キャッシュ制御を行う２次キャッシュ制御部とを有し，２次キャッシュ制御部が，１次キャッシュメモリ部がキャッシュミスを発生したアクセス要求に応答して，２次キャッシュタグでキャッシュヒットと判定した場合，２次キャッシュタグ内の１次キャッシュ状態情報に基づいて，１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去するシノニム処理を実行する２次キャッシュメモリ部とを有する。【選択図】図１
2015191571.tif 000002
【特許請求の範囲】
【請求項１】
仮想アドレスで検索される１次キャッシュタグ及び１次キャッシュデータメモリと，キャッシュ制御を行う１次キャッシュ制御部とを有する１次キャッシュメモリ部と，
物理アドレスで検索される２次キャッシュタグ及び２次キャッシュデータメモリと，キャッシュ制御を行う２次キャッシュ制御部とを有し，前記２次キャッシュ制御部が，前記１次キャッシュメモリ部がキャッシュミスを発生したアクセス要求に応答して，前記２次キャッシュタグでキャッシュヒットと判定した場合，前記２次キャッシュタグ内の１次キャッシュ状態情報に基づいて，前記１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去するシノニム処理を実行する２次キャッシュメモリ部とを有する演算処理装置。
【請求項２】
請求項１において，
前記２次キャッシュ制御部は，前記２次キャッシュタグ内の１次キャッシュ状態情報が無効状態の場合に，前記シノニム処理を実行せずに，前記キャッシュヒットしたデータを前記１次キャッシュメモリ部に応答し，有効状態の場合に，前記シノニム処理を実行し前記キャッシュヒットしたデータを前記１次キャッシュメモリ部に応答する演算処理装置。
【請求項３】
請求項１または２において，
前記２次キャッシュタグは，前記２次キャッシュメモリ部へのキャッシュ登録時のアクセス要求の旧仮想アドレスを記憶し，
前記２次キャッシュ制御部は，前記現在のアクセス要求に応答して，前記２次キャッシュタグでキャッシュヒットを判定した場合，前記現在のアクセス要求の新仮想アドレスが前記２次キャッシュタグ内に記憶されている旧仮想アドレスと一致しない場合に，前記１次キャッシュ状態情報が無効状態か否かに基づいて前記シノニム処理を実行する演算処理装置。
【請求項４】
請求項３において，
前記２次キャッシュ制御部は，前記１次キャッシュメモリ部でキャッシュミスした現在のアクセス要求に応答して，第１の要求をパイプライン処理して，２次キャッシュタグに基づくキャッシュヒット判定と，前記新仮想アドレスと旧仮想アドレスの比較判定と，前記１次キャッシュ状態情報の判定とを実行し，前記キャッシュヒット判定がキャッシュヒットで，前記比較判定が不一致で，前記１次キャッシュ状態情報が無効状態の場合に，前記２次キャッシュタグ内の旧仮想アドレスを新仮想アドレスに更新し，前記１次キャッシュ状態情報を有効状態に更新し，前記１次キャッシュメモリ部にデータ応答する演算処理装置。
【請求項５】
請求項４において，
前記２次キャッシュ制御部は，前記第１の要求をパイプライン処理するときに，前記２次キャッシュタグに基づくキャッシュヒット判定がキャッシュヒットで，前記比較判定が不一致で，前記１次キャッシュ状態情報が有効状態の場合に，前記シノニム処理に対応する第２の要求をパイプライン処理する演算処理装置。
【請求項６】
請求項４または５において，
前記２次キャッシュ制御部は，前記第１の要求をパイプライン処理するときに，前記２次キャッシュタグに基づくキャッシュヒット判定がキャッシュヒットで，前記比較判定が一致の場合に，前記２次キャッシュタグ内の１次キャッシュ状態情報を有効状態に更新し，前記１次キャッシュメモリ部にデータ応答する演算処理装置。
【請求項７】
請求項１において，
さらに，前記アクセス要求の仮想アドレスを物理アドレスに変換するアドレス変換部を有し，
前記１次キャッシュ制御部は，前記アクセス要求の仮想アドレスに基づいて前記１次キャッシュタグから読み出した物理アドレスと，前記アドレス変換部で変換した物理アドレスとを比較し，一致するときにキャッシュヒット，不一致のときにキャッシュミスを検出する演算処理装置。
【請求項８】
請求項１において，
さらに，入出力制御部を有し，
前記２次キャッシュ制御部は，前記入出力制御部による外部からのデータ転送の際に，２次キャッシュタグ及び２次キャッシュデータメモリにデータ登録を行う演算処理装置。
【請求項９】
仮想アドレスで検索される１次キャッシュタグ及び１次キャッシュデータメモリと，キャッシュ制御を行う１次キャッシュ制御部とを有する１次キャッシュメモリ部と，
物理アドレスで検索される２次キャッシュタグ及び２次キャッシュデータメモリと，キャッシュ制御を行う２次キャッシュ制御部とを有する２次キャッシュメモリ部とを有する演算処理装置の制御方法であって，
前記１次キャッシュ制御部が，アクセス要求によりキャッシュミスを発生し，
前記１次キャッシュメモリ部がキャッシュミスした前記アクセス要求に応答して，前記２次キャッシュ制御部が，前記２次キャッシュタグでキャッシュヒットと判定した場合，前記２次キャッシュタグ内の１次キャッシュ状態情報に基づいて，前記１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去するシノニム処理を実行する演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
演算処理装置（プロセッサ）は，演算処理部（ALU：Arithmetic Logic Unit ）とキャッシュメモリ部を有し，メインメモリ内のデータ（命令コード及びデータを含む）の一部をキャッシュメモリ部に記憶し，演算処理部によるメモリアクセス要求を高速化する。一般的に，プロセッサのコアは演算処理部と１次キャッシュメモリ部（以下単に１次キャッシュと呼ぶ）を有し，プロセッサは複数のコア間で２次キャッシュメモリ部（以下単に２次キャッシュと呼ぶ）を共有する。
【０００３】
コアの演算処理部は，仮想アドレスに基づいてメモリアクセス命令を発行する。仮想アドレスはアドレス変換テーブルであるTLB（Translation Lookaside Buffer）により物理アドレスに変換される。ただし，高速化のために，１次キャッシュタグメモリは，仮想アドレスで検索され，１次キャッシュタグメモリから読み出された物理アドレスとTLBで変換された物理アドレスとを比較してキャッシュヒット判定を行う。
【０００４】
１次キャッシュの検索アドレスが仮想アドレスであり，一方で，プロセス変更等に伴いアドレス変換テーブルTLBの更新が行われて仮想アドレスと物理アドレスの対応関係が変更されると，アドレス変換テーブル内のある物理アドレスに対応する仮想アドレスと，１次キャッシュタグ内の同じ物理アドレスに対応する仮想アドレスとが整合しなくなる場合がある。その結果，演算処理部が，更新前に１次キャッシュに登録したある物理アドレスのデータを，更新後の仮想アドレスでアクセス要求すると，１次キャッシュは１次キャッシュタグメモリで検索した物理アドレスが不一致となりキャッシュミスと判定する。この状態はシノニムと呼ばれる。
【０００５】
１次キャッシュがシノニムの発生によりキャッシュミスと判定すると，２次キャッシュにアクセス要求が行われる。それに応答して，２次キャッシュがキャッシュヒットと判定すると，１次キャッシュに対してデータ応答を行う。そして，１次キャッシュはそのデータ応答のデータと登録情報を１次キャッシュ内の１次キャッシュデータメモリと１次キャッシュタグメモリにそれぞれ登録する。このデータの登録が行われる際，１次キャッシュ内に更新前の仮想アドレスによるデータが残っていると，１次キャッシュ内に同じデータが二重登録されることになる。これを防止する為に，２次キャッシュは，仮想アドレスが一致するか否かの判定処理によりシノニムの判定を行い，シノニムであると判定される場合はシノニム処理を実行して１次キャッシュ内のデータの二重登録を防止する。このシノニム処理は，後述するとおり，１次キャッシュ内に同じデータが登録されているか否かの判定処理，同じデータが登録されていたら１次キャッシュからそのデータを削除処理などが含まれる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１６５６２６号公報
【特許文献２】国際公開第２００７／０９４０４６号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一方で，近年において，プロセッサの外部からI/O（Input / Output）装置を介してデータをメインメモリに転送する時に，最下位レベルのキャッシュにデータを登録するキャッシュインジェクションを行うことが提案されている。プロセッサが１次キャッシュと２次キャッシュの構成を有する場合は，キャッシュインジェクション処理により最下位レベルの２次キャッシュにデータが登録されるが，１次キャッシュにはそのデータは登録されない。
【０００８】
キャッシュインジェクション処理では，I/O装置から行われるので仮想アドレスを伴っていないので，２次キャッシュはインジェクトしたデータに対する仮想アドレスを２次キャッシュタグに登録することができない。そのため，その後のメモリアクセス要求時の２次キャッシュでのシノニム判定でシノニム状態と判定される。その結果，２次キャッシュは，シノニム状態ではないもかかわらず上記のシノニム処理を実行する。シノニム処理は，複数の要求を２次キャッシュのキャッシュパイプラインに投入して実行するため，プロセッサの処理効率の低下を招く。
【０００９】
そこで，一つの実施の形態における目的は，不要なシノニム処理を回避する演算処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
実施の形態の一つの側面は，仮想アドレスで検索される１次キャッシュタグ及び１次キャッシュデータメモリと，キャッシュ制御を行う１次キャッシュ制御部とを有する１次キャッシュメモリ部と，
物理アドレスで検索される２次キャッシュタグ及び２次キャッシュデータメモリと，キャッシュ制御を行う２次キャッシュ制御部とを有し，前記２次キャッシュ制御部が，前記１次キャッシュメモリ部がキャッシュミスを発生したアクセス要求に応答して，前記２次キャッシュタグでキャッシュヒットと判定した場合，前記２次キャッシュタグ内の１次キャッシュ状態情報に基づいて，前記１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去するシノニム処理を実行する２次キャッシュメモリ部とを有する演算処理装置である。
【発明の効果】
【００１１】
不要なシノニム処理を行わずに処理効率を高めることができる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態における演算処理装置の構成を示す図である。
【図２】図１の演算処理部１２からのアクセス要求の典型的な例であるデータ要求の動作を説明する図である。
【図３】図２のデータ要求の動作を示すシーケンス図である。
【図４】データ要求における４つの要求の例を示す図である。
【図５】L1キャッシュタグL1-TAG1内の同じ物理アドレスPAに異なる仮想アドレスVAが割り当てられるシノニム状態の発生を説明する図である。
【図６】シノニム状態の発生を説明する図である。
【図７】シノニム状態を回避する動作を説明する図である。
【図８】図２，３のデータ要求についての動作と，図７のデータ要求時にシノニム状態を検出したときの動作とを示すフローチャート図である。
【図９】図７のシノニム状態を回避する動作のうち，L1キャッシュタグコピーL1-TAG2でキャッシュヒットした場合の動作（第３の動作）を示すシーケンス図である。
【図１０】図７のシノニム状態を回避する動作のうち，L1キャッシュタグコピーL1-TAG2でキャッシュミスした場合の動作（第４の動作）を示すシーケンス図である。
【図１１】キャッシュインジェクション動作を示す図である。
【図１２】本実施の形態のキャッシュインジェクション後のデータ要求の動作を示す図である。
【図１３】本実施の形態の場合の第３の動作を示す図である。
【図１４】本実施の形態におけるフローチャート図である。
【図１５】キャッシュインジェクション後のデータ要求の動作（第５の動作）を示すシーケンス図である。
【図１６】本実施の形態におけるL2キャッシュパイプラインのシノニム判定とL2-TAG1のVA更新を行う論理回路を示す図である。
【図１７】本実施の形態におけるL1キャッシュタグとL2キャッシュタグの具体例を示す図である。
【図１８】本実施の形態おけるL1キャッシュタグとL2キャッシュタグのデータフォーマットの具体例を示す図である。
【発明を実施するための形態】
【００１３】
図１は，本実施の形態における演算処理装置の構成を示す図である。演算処理装置（CPU）１は，CPUコア（演算処理部）１０と，２次キャッシュメモリ部２０とを有する。CPUコア１０は，演算装置１２と１次キャッシュメモリ部１４とを有する。
【００１４】
１次キャッシュメモリ部（以下L1キャッシュ）１４は，１次キャッシュパイプライン（１次キャッシュメモリ制御部）１６と，仮想アドレスを物理アドレスに変換するアドレス変換部TLBと，１次キャッシュタグメモリ（以下L1キャッシュタグ）L1-TAG1と，１次キャッシュデータメモリL1-DATAとを有する。L1キャッシュタグL1-TAG1は，仮想アドレスVAで検索され，L1-TAG1から読み出された物理アドレスPAとアドレス変換部TLBで変換された物理アドレスPAとを比較してキャッシュヒットかミスかを判定する。このように，L1キャッシュタグL1-TAG1は仮想アドレスVAで検索され読み出されるのは物理アドレスPAであり，VIPT(Virtually Indexed Physically Tagged)である。検索アドレスはアクセス先アドレスの上位ビットであり，L1キャッシュタグから読み出されるのはアクセス先アドレスの下位ビット（キャッシュブロックサイズの下位アドレスは除く）である。
【００１５】
２次キャッシュメモリ部（またはL2キャッシュ）２０は，１次キャッシュメモリ部（L1キャッシュ）１４からのアクセス要求を受け付けるムーブインポートMIPORTと，データ書き出し要求を受け付けるムーブアウトポートMOPORTと，両ポートの要求を選択して２次キャッシュパイプライン２２に投入する要求投入部（セレクタ）SELとを有する。更に，２次キャッシュメモリ部２０は，２次キャッシュタグメモリ（以下L2キャッシュタグ）L2-TAG1と，２次キャッシュデータメモリL2-DATAと，１次キャッシュタグL1-TAG1のコピーである１次キャッシュタグコピーL1-TAG2と，要求ロック部２４とを有する。２次キャッシュタグと２次キャッシュデータメモリL2-TAG1，L2-DATAは物理アドレスで検索される。一方，１次キャッシュタグコピーL1-TAG2は仮想アドレスで検索される。このように２次キャッシュタグL2-TAG1は物理アドレスPAで検索され読み出されるのも物理アドレスPAであり，PIPT(Physically Indexed Physical Tagged)である。
【００１６】
CPU１は，更に，外部とのインターフェースを行う入出力制御部I/Oと，メインメモリ３０へのアクセス制御を行うメモリアクセスコントローラMACとを有する。入出力制御部I/Oは，例えば外部バスBUSを介して大容量（例えばハードディスク）の記憶装置HDDに接続される。
【００１７】
図２は，図１の演算処理部１２からのアクセス要求の典型的な例であるデータ要求の動作を説明する図である。図３は，データ要求の動作を示すシーケンス図である。図２，３のデータ要求の動作は，いずれも１次キャッシュメモリ部がキャッシュミスとなり，２次キャッシュメモリ部にデータ要求をムーブインポートMIPORTに出力した例である。図３の（１）は２次キャッシュタグL2-TAG1でヒットした例，（２）は２次キャッシュタグL2-TAG1でミスした例である。図３には，図２内の工程番号と，後述する図８の工程番号とが併記されている。
【００１８】
CPUコア１０内の演算装置１２はデータ要求を１次キャッシュ制御部１４に投入する（S51）。１次キャッシュ制御部１４は，データ要求の仮想アドレスVAで１次キャッシュタグL1-TAG1を検索し，L1-TAG1から読み出された物理アドレスとアドレス変換部TLBで変換した物理アドレスを比較し，キャッシュミスとなる（S52）。そこで，１次キャッシュ制御部１４は，２次キャッシュメモリ部２０のムーブインポートMIPORTにデータ要求を入力し（S53），要求投入部SELが２次キャッシュ制御部２２にREAD要求を投入する（S54）。２次キャッシュ制御部２２は，データ要求の物理アドレスPAで２次キャッシュタグL2-TAG1を検索し，キャッシュヒットすると（S55），２次キャッシュ制御部２２は１次キャッシュメモリ部１４にデータ応答すると共に，１次キャッシュタグコピーL1-TAG2にヒットしたデータの登録情報（物理アドレス等）を登録し（S56_A），１次キャッシュタグL1-TAG1と１次キャッシュデータメモリL1-DATAにデータ応答の登録情報とデータをそれぞれ登録する（S56_B）。
【００１９】
２次キャッシュ制御部２２が２次キャッシュタグL2-TAG1を検索してキャッシュミスを検出すると（S57），メモリアクセスコントローラMACにデータの読み出し要求を出して（S58），メモリアクセスコントローラMACはメインメモリ３０からデータを読み出し，２次キャッシュ制御部２２にデータ応答する（S59）。このデータ応答は２次キャッシュメモリ部２０内の図示しないムーブインポートに入力され，要求投入部SELがMVIN要求を２次キャッシュパイプライン２２に投入して，メモリアクセスコントローラMACから応答されたデータとそのアドレスを，２次キャッシュタグL2-TAG1とデータメモリL2-DATAに登録し（S60_A）,１次キャッシュタグコピーL1-TAG2に登録し（S56_A），１次キャッシュメモリ部１４にデータ応答する。これに応答して，１次キャッシュメモリ部１４は１次キャッシュタグL1-TAG1とデータメモリL1-DATAとに登録情報とデータを登録する（S56_B）。
【００２０】
図３（１）の２次キャッシュでキャッシュヒットする例では，READ要求をL2キャッシュパイプライン２２に投入することで，２次キャッシュタグの検索と，１次キャッシュタグコピーL1-TAG2，１次キャッシュタグL1-TAG1,データメモリL1-DATAへの登録を完了する。一方，図３（２）のL2キャッシュでキャッシュミスする例では，READ要求に加えて，MVIN要求を２次キャッシュパイプライン２２に投入する。
【００２１】
図４は，データ要求における４つの要求の例を示す図である。READ要求は，２次キャッシュメモリ部のデータを読み出す要求命令であり，MVIN要求は，２次キャッシュメモリ部と１次キャッシュメモリ部に新しくデータを登録する要求命令であり，それらの動作は図２，３で説明した。
【００２２】
MOEX要求は，１次キャッシュメモリ部内の旧仮想アドレスVAのエントリを消去し，そのエントリにデータがストアされていたのであればムーブアウトしてデータを２次キャッシュメモリ部内に登録する要求命令である。更に，MIRD要求は，シノニム発生時など２次キャッシュメモリ部内にデータが登録されている場合に，１次キャッシュメモリ部に新しくデータを登録し，且つ２次キャッシュタグL2-TAG1の仮想アドレスVAを更新する要求命令である。MIRD要求には２次キャッシュタグL2-TAG1内のL1タイプコードL1-TCを更新する処理が含まれる。
【００２３】
以下，簡単の為に，１次キャッシュメモリ部１４をL1キャッシュ１４と，１次キャッシュタグメモリL1-TAG1をL1キャッシュタグと，２次キャッシュメモリ部２０をL2キャッシュ２２と，２次キャッシュタグメモリL2-TAG1をL2キャッシュタグと，１次キャッシュタグコピーL1-TAG2をL1キャッシュタグコピーとそれぞれ称する。また，L1キャッシュ制御部１６，L2キャッシュ制御部２２は，それぞれL1キャッシュパイプライン１６，L2キャッシュパイプライン２２と称する。
【００２４】
［シノニム状態］
図５は，L1キャッシュタグL1-TAG1内の同じ物理アドレスPAに異なる仮想アドレスVAが割り当てられるシノニム状態の発生を説明する図である。図６は，シノニム状態の発生を説明する図である。
【００２５】
図５は，図２，３に示したように，仮想アドレスVA1（上位アドレスと下位アドレスを含む）によるデータ要求により，L1キャッシュタグL1-TAG1内に仮想アドレスVA1の下位ビットに対する物理アドレスPA_T1が登録された状態を示す。なお，データ要求の仮想アドレスVAに対する物理アドレスは上位アドレスがPA_I，下位アドレスがPA_Tとすると，上位アドレスPA_IはL2キャッシュタグL2-TAG1の検索のインデックスに利用され，下位アドレスPA_TはL1キャッシュタグL1-TAG1とL2キャッシュタグL2-TAG1内のタグアドレスになる。但し，一般にはL2キャッシュタグL2-TAG1のほうがL1キャッシュタグL1-TAG1よりも大容量であるので，L1キャッシュタグL1-TAG1内の物理アドレスとL2キャッシュタグL2-TAG1内の物理アドレスのビット数は異なる。図５では，簡単のために同じ物理アドレスPA_T1がL1,L2キャッシュタグに記憶されている。
【００２６】
上記の状態で，プロセス交換などによりアドレス変換部TLBの変換テーブルの更新が行われた場合，同じ物理アドレスPA_I1，PA_T1に対して異なる仮想アドレスVA2が割り当てられることがある。
【００２７】
図６は，アドレス変換部TLBの更新の例を示す。図６では，簡単のために，１３ビットの仮想アドレスVA[12:0]を最上位ビットVA[12]と下位ビットVA[11:0]に分け，最上位ビットVA[12]がL1キャッシュタグL1-TAG1のインデックスのアドレスに利用されるものとする。また，１３ビットの物理アドレスPA[12:0]も最上位ビットPA[12]と下位ビットPA[11:0]に分け，最上位ビットPA[12]がL2キャッシュタグL2-TAG1のインデックスのアドレスに利用されるものとする。
【００２８】
図６（１）の状態では，仮想アドレスVA1に対応する物理アドレスPA[12:0]はPA_I1,PA_T1であり，仮想アドレスVA2に対応する物理アドレスPA[12:0]はPA_I2,PA_T2である。それに対して，アドレス変換テーブルTLBの更新が行われた図６（２）の状態では，仮想アドレスVA1,VA2に対する物理アドレスPA_I1,PA_T1，PA_I2,PA_T2が逆の関係になっている。このようにアドレス変換テーブルTLBが更新される場合がある。その結果，同じ物理アドレスPA_I1,PA_T1に対して，アドレス変換テーブルTLBの更新前の旧仮想アドレスVA1と更新後の新仮想アドレスVA2とが割り当てられたシノニム状態が発生する。
【００２９】
そこで，図５には，図６のとおりアドレス変換テーブルTLBが更新されてシノニム状態が発生したにもかかわらず，L1キャッシュタグL1-TAG1は更新されていない状態が示されている。L1キャッシュのタグL1-TAG1とデータL1-DATAをリセットすると新たにメインメモリへのアクセスが発生するので，TLBが更新されてもL1キャッシュは更新しないことが行われる。その結果，L1キャッシュタグL1-TAG1内は，仮想アドレスVA1に対してタグの物理アドレスPA_T1が，VA2に対してPA_T2がそれぞれ対応付けられたままになっている。
【００３０】
この状態で，演算処理部から同じ物理アドレスPA1のデータD1に対する仮想アドレスVA2でデータ要求が発生した場合について説明する。図５の各工程S51-S56は，図２の各工程S51-S56に対応している。
【００３１】
まず，演算処理部から仮想アドレスVA2でデータ要求が発行されると，L1キャッシュパイプライン１６が仮想アドレスVA2でL1キャッシュタグL1-TAG1を検索し物理アドレスPA_T2を読み出す。一方，アドレス変換部TLBは仮想アドレスVA2を変換して物理アドレスPA_T1を出力する。その結果，両物理アドレスPA_T1,PA_T2の比較が不一致となりキャッシュミスになる（S52)。そこで，L1キャッシュパイプライン１６は，L2キャッシュ２０内のムーブインポートMIPORTにデータ要求を発行する（S53)。
【００３２】
次に，ムーブインポートMIPORTのデータ要求に応答して，L2キャッシュパイプライン２２にREAD要求が投入されると，物理アドレスPA_I1によりL2キャッシュタグL2-TAG1が検索されて物理アドレスPA_T1が読み出され，仮想アドレスVA2から変換された物理アドレスPA_T1と一致し，キャッシュヒットとなる（S55)。その結果，L2キャッシュからL1キャッシュにデータ応答が行われ，L1キャッシュ１４のL1キャッシュタグL1-TAG1に仮想アドレスVA2に対して物理アドレスPA_T1が登録され，L1キャッシュデータメモリL1-DATAにデータD1が登録される（S56)。
【００３３】
この状態は，L1キャッシュタグL1-TAG1内に同じ物理アドレスPA_T1に対するデータD1が二重登録されたことを意味する。このようなL1キャッシュ内に同じデータが二重に登録されることは，その後の書き込みによりデータD1が更新されるとデータの一貫性を失う事態を招いてしまい，避ける必要がある。
【００３４】
［シノニム状態を回避する動作］
図７は，シノニム状態を回避する動作を説明する図である。図７の前提の状態は図６と同じである。そして，図７において新仮想アドレスVA2のデータ要求が発生してL1キャッシュタグL1-TAG1でキャッシュミスしL2キャッシュタグL2-TAG1でキャッシュヒットするまでの工程S51-S55も，図６と同じである。よって，そこまでの説明は省略する。
【００３５】
図７に示されるとおり，シノニム状態を検出するために，L2キャッシュパイプライン２２は，データをL1キャッシュに登録した時のアクセス先の旧仮想アドレスVA1を，L2キャッシュ２０内のL2キャッシュタグL2-TAG1に記録しておく。その後，L1キャッシュからL2キャッシュにデータ要求があり（S53)，L2キャッシュタグL2-TAG1でキャッシュヒットしたときに（S55)，L2キャッシュパイプライン２２は，現在のデータ要求の新仮想アドレスVA2とL2キャッシュタグL2-TAG1内の旧仮想アドレスVA1とを比較する（S61）。この新旧仮想アドレスVA1,VA2が不一致となる場合は，アドレス変換部TLBが更新された後の新仮想アドレスVA2によるデータ要求であることが判明する。したがって，もし同じデータがL1キャッシュに登録されている場合は，シノニム状態になっているので，それを確認する必要がある。
【００３６】
そこで，L2キャッシュ２０内にL1キャッシュタグL1-TAG1のコピーであるL1キャッシュタグコピーL1-TAG2を設けておき，L2キャッシュパイプライン２２は，L2キャッシュタグL1−TAG1から旧仮想アドレスVA1を読み出し，L1キャッシュタグコピーL1-TAG2を旧仮想アドレスVA1で検索し，旧仮想アドレスVA1に対して現在のデータ要求に対応する同じ物理アドレスPA_T1が登録されているか否かをチェックする（S62)。このチェックはL1キャッシュタグL1-TAG1に対しても行うことができるが，L2キャッシュ２０はL1キャッシュ１４に要求する必要があるので，L2キャッシュ内にL1キャッシュタグコピーL1-TAG2を記憶して，L2キャッシュ内で確認できるようにしている。
【００３７】
上記の工程S62においてL1キャッシュタグコピーL1-TAG2を検索してヒットすると，L1キャッシュに同じ物理アドレスのデータが登録されていることを意味する。そこで，L2キャッシュパイプライン２２は，まずL1キャッシュ内の旧仮想アドレスVA1のエントリ（キャッシュブロック）をL1キャッシュタグL1-TAG1とデータメモリL1-DATAから消去し，同時に，L1キャッシュタグコピーL1-TAG2内の旧仮想アドレスVA1のキャッシュブロックも消去し，L1キャッシュに新仮想アドレスVA2でデータ応答をする（S64)。それに応答して，L1キャッシュに新仮想アドレスVA2でデータが登録される。
【００３８】
上記の工程S62で，L1キャッシュタグコピーL1-TAG2を旧仮想アドレスVA1で検索した結果キャッシュミスする場合もある。その場合は，アドレス変換部TLBを更新した後に，L1キャッシュから旧仮想アドレスVA1の登録が消去済みであることを意味するので，工程S63のL1キャッシュから旧アドレスVA1のエントリを消去する必要はない。
【００３９】
また，上記の工程S61で，旧仮想アドレスと新仮想アドレスが一致する場合は，アドレス変換部TLBの更新は行われていないことを意味し，シノニム状態の可能性はないので，L2キャッシュパイプラインは，工程S61後に工程S64によるデータ応答をL1キャッシュに対して行う。
【００４０】
図８は，図２，３のデータ要求についての動作と，図７のデータ要求時にシノニム状態を検出したときの動作とを示すフローチャート図である。
【００４１】
図８において，図２，３のデータ要求におけるL2キャッシュタグL2-TAG1でキャッシュヒットした場合とミスした場合の２種類の動作（図３（１）と（２））は，図８において以下の通りになる。
【００４２】
［L1でミス，L2でヒットした場合の第１の動作（図３（１））］
この動作は，図８において工程S1-S11に示されている。図８中には図３（１）のシーケンス図の工程S51-S56も示されている。工程S1-S11の動作は以下のとおりである。
S1（S51)：CPUコア内の演算処理部１２がL1キャッシュに対してデータ要求する。具体的にはREAD要求をL1キャッシュパイプラインに投入する。
S2（S52)：L1キャッシュパイプラインがL1キャッシュタグL1-TAG1を仮想アドレスVAで検索する。ここではキャッシュミスとなる。
S4（S53)：L1キャッシュがL2キャッシュにデータ要求を発行する。
S5（S54)：L2キャッシュにおいて，要求投入部SELがムーブインポートMIPORTからREAD要求をL2キャッシュパイプラインに投入する。
S6（S55)：L2キャッシュパイプラインがL2キャッシュタグL2-TAG1を物理アドレスPAで検索し，ヒットする。
S7（S61)：L2キャッシュパイプラインがL2キャッシュタグL2-TAG1内の旧仮想アドレスと現在のデータ要求の新仮想アドレスとを比較し，シノニム状態をチェックする。ここでは，アドレス変換部TLBが未更新だったため，比較結果は一致（MATCH)となる。
S8，S9：L2キャッシュパイプラインがL2キャッシュタグL2-TAG1内の後述するL1タイプコードL1-TCを更新し，L1キャッシュタグコピーL1-TAG2にヒットしたデータの登録情報を登録する。L1キャッシュタグコピーL1-TAG2に登録するのは，その後の工程S10でL1キャッシュにデータを登録際に，L1キャッシュタグL1-TAG1に登録情報を登録するからである。
S10（S56)：L2キャッシュパイプラインがL1キャッシュにデータ応答する。これに応答して，L1キャッシュはそのデータを登録する。
S11：最後にL1キャッシュはそのデータをCPUコアにデータ応答する。
【００４３】
［L1でミス，L2でミスした場合の第２の動作（図３（２））］
この動作は，図８において工程S1-S6,S22-S28に示されている。図８中には図３（２）のシーケンス図の工程S51-S55,S58-60,S56も示されている。工程S1-S5の動作は，上記した通りである。そこで，工程S6,S22-S28の動作は以下のとおりである。
S6（S55)：L2キャッシュパイプラインがL2キャッシュタグL2-TAG1を物理アドレスPAで検索し，キャッシュミスする。
S22（S58)：L2キャッシュパイプラインはメモリアクセスコントローラMACにデータ要求を発行する。これに応答して，MACはメインメモリにアクセスして物理アドレスのデータを読み出す。
S23（S59)：MACはメインメモリからデータを読み出した後，L2キャッシュにデータ応答する。
S24（S60）：L2キャッシュ内のムーブインバッファMIB（図示せず）からL2キャッシュパイプラインにMVIN要求が投入される。MVIN要求は，図４に示したとおり，L2,L1キャッシュに新しいデータを登録する要求である。
S25：L2キャッシュパイプラインがL2キャッシュタグL2-TAG1に登録する。この登録により，L2キャッシュタグL2-TAG1内の現データ要求の物理アドレスPAに対応して，現仮想アドレスと物理アドレスPAをL2キャッシュタグに記憶する。また，後述するL1タイプコードL1-TCも更新する。
S26：L2キャッシュパイプラインが，L1キャッシュタグコピーL1-TAG2にMACからのデータの登録情報を登録する。L1キャッシュタグコピーL1-TAG2に登録するのは，その後の工程S27でL1キャッシュにデータを登録し，L1キャッシュタグL1-TAG1にも登録するからである。
S27（S56)：L2キャッシュパイプラインがL1キャッシュにデータ応答する。これに応答して，L1キャッシュはそのデータを登録する。
S28：最後にL1キャッシュはそのデータをCPUコアにデータ応答する。
【００４４】
以上の通り，工程S25-S28は，工程S8-S11と実質的に同じ動作である。そして，図８及び図３から理解できるとおり，L1キャッシュでミスしL2キャッシュでヒットした場合の第１の動作（工程S1-S11，図３（１））では，L2キャッシュパイプラインにはREAD要求が流し込まれることで最後の工程S10までを完結する。一方，L1キャッシュでミスしL2キャッシュでミスした場合の第２の動作（S1-S6,S22-S28，図３（２））では，L2キャッシュパイプラインにはREAD要求と，MVIN要求とが流し込まれることで最後の工程S28までの処理が完結する。
【００４５】
図８において，図７のシノニム状態を回避する動作は，L1キャッシュタグコピーL1-TAG2でキャッシュヒットした場合と，ミスした場合の２種類の動作は，図８において以下の通りになる。
【００４６】
［L1でミス，L2でヒット，VAが不一致，L1-TAG2でヒットした場合の第３の動作（図７）］
図９は，図７のシノニム状態を回避する動作のうち，L1キャッシュタグコピーL1-TAG2でキャッシュヒットした場合の動作（第３の動作）を示すシーケンス図である。図８と図９を参照しながら第３の動作を以下説明する。第３の動作は，図８においてS1-S7,S12-S21,S27-S28と最も長い動作になる。工程S1-S6までは第１の動作と同じであるので省略する。
S7（S61)：L2キャッシュパイプラインが，L2キャッシュタグL2-TAG1内の旧仮想アドレスVA1と現在のデータ要求の新仮想アドレスVA2とを比較し，シノニム状態をチェックする。ここでは，アドレス変換部TLBが更新済みだったため，比較結果は不一致（UNMATCH)となる。つまり，シノニムヒットになる。
S12：そこで，要求投入部SELは，MIPORTからL2キャッシュパイプラインにMOEX要求を投入する。MOEX要求は，図４に示すとおり，L1キャッシュの旧VAのエントリ（登録）を消去し，L1キャッシュのデータがストアされたデータであれば，L2キャッシュにムーブアウト（書き出し処理）する要求である。
S13（S62)：L2キャッシュパイプラインが，L2-TAG1から読み出した旧仮想アドレスVA1でL1キャッシュタグコピーL1-TAG2を検索し，L1キャッシュに重複するデータが登録されているか否かチェックする。ここでは，L1キャッシュタグコピーL1-TAG2ではキャッシュヒットし，L1キャッシュに重複するデータが登録されていることを検出する。
S14：そこで，L2キャッシュは，L1キャッシュに対して，L1キャッシュ内の重複しているデータをムーブアウトするムーブアウト要求を発行する。
S15（S63)：ムーブアウト要求に応答して，L1キャッシュパイプラインは，L1キャッシュタグL1-TAG1とL1キャッシュデータL1-DATAの登録を消去する。
S16：L1キャッシュパイプラインは，L2キャッシュにL1キャッシュから登録を消去したことを通知するオーダ応答を行う。
S17：これに応答して，ムーブアウトポートMOPORTからL2キャッシュパイプラインに上記のオーダ応答に対応するWRBK要求（ライトバック要求）が投入される。これにより，L2キャッシュパイプラインは，L1キャッシュで消去したデータがストアされたデータの場合は，L2キャッシュ内にそのデータの書き出し処理（ライトバック処理）を行う。
S18：そして，L2キャッシュパイプラインは，L1キャッシュタグコピーL1-TAG2の登録を消去する。L1キャッシュにて登録が消去されたため，コピーのL1-TAG2の登録も消去するためである。これで旧仮想アドレスVA1に対する処理が終了する。
S19：次に，要求投入部SELがMIPORTからMIRD要求をL2キャッシュパイプラインに投入する。MIRD要求は，図４に示すとおり，L1キャッシュに新しくデータを登録しつつ，L2キャッシュタグL2-TAG1の仮想アドレスVAを更新する要求である。
S20：L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1内の仮想アドレスVAを新仮想アドレスVA2に更新し，後でL1キャッシュにデータが登録されるので，L2キャッシュタグL2-TAG1内の後述するL1タイプコードLl-TCを有効（VALID)に更新する。
S21：L2キャッシュパイプラインが，L1キャッシュタグコピーL1-TAG2に新仮想アドレスVA2の登録情報を登録する。L1キャッシュタグコピーL1-TAG2に登録するのは，その後のS28でL1キャッシュにデータを登録し，L1キャッシュタグL1-TAG1にも登録するからである。
S27（S64)：L2キャッシュパイプラインがL1キャッシュにデータ応答する。これに応答して，L1キャッシュはそのデータを登録する。
S28：最後にL1キャッシュはそのデータをCPUコアにデータ応答する。
【００４７】
したがって，図９に示されるとおり，工程S14-S18は旧仮想アドレスVA1（OLD-VA)に対する処理であり，L1キャッシュから登録を消去し，必要ならL2キャッシュに消去したデータをムーブアウトし，L1キャッシュタグコピーL1-TAG2の登録も消去する処理である。また，工程S19-S21，S27-S28は新仮想アドレスVA2（NEW-VA)に対する処理であり，L2-TAG1の仮想アドレスを更新し，L1-TAG2に登録し，L1キャッシュに登録する処理である。
【００４８】
そして，第３の動作では，L2キャッシュパイプラインにREAD要求と，MOEX要求と，オーダ応答（WRBK)と，MIRD要求が投入される。
【００４９】
また，工程S20-S21，S27-S28は，第１の動作の工程S8-S11と，第２の動作の工程S25-S28と実質的に同じ処理である。
【００５０】
［L1でミス，L2でヒット，VAが不一致，L1-TAG2でミスした場合の第４の動作（図７）］
図１０は，図７のシノニム状態を回避する動作のうち，L1キャッシュタグコピーL1-TAG2でキャッシュミスした場合の動作（第４の動作）を示すシーケンス図である。図８と図１０を参照しながら第４の動作を以下説明する。第４の動作は，図８においてS1-S7，S12-S13，S19-S21，S27-28の動作になる。工程S1-S7までは第３の動作と同じである。そして，工程S19-S21，S27-S28も第３の動作と同じである。以下，第４の動作について説明する。
【００５１】
S12：工程S7で新仮想アドレスVA2と旧仮想アドレスVA1とが不一致だったため，要求投入部SELがMIPORTからL2キャッシュパイプラインにMOEX要求を投入する。MOEX要求は，L1キャッシュの旧VAのエントリ（登録）を消去し，L1キャッシュのデータがストアされたデータであれば，L2キャッシュにムーブアウト（書き出し処理）する要求である。
S13（S62)：次に，L2キャッシュパイプラインが，L2-TAG1から読み出した旧仮想アドレスVA1でL1キャッシュタグコピーL1-TAG2を検索し，L1キャッシュに重複するデータが登録されているか否かチェックする。ここでは，L1-TAG2でキャッシュミスし，L1キャッシュに重複するデータが登録されていないことを検出する。
S19：次に，要求投入部SELがMIPORTからMIRD要求をL2キャッシュパイプラインに投入する。MIRD要求は，L1キャッシュに新しくデータを登録しつつ，L2-TAG1の仮想アドレスVAを更新する要求である。
【００５２】
その後は，図９の第３の動作の新仮想アドレスに対する処理S20-S21,S27-S28と同じである。図１０の第４の動作のシーケンス図を図９の第３の動作と対比すると理解できるとおり，図１０の第４の動作では，L1キャッシュタグコピーL1-TAG2でキャッシュミスしたため，旧仮想アドレス（OLD-VA)に対するL1キャッシュの登録の消去処理がなく，新仮想アドレス（NEW-VA)に対する処理S20-S21，S27-S28だけを行う。
【００５３】
更に，第４の動作では，L2キャッシュパイプラインにREAD要求と，MOEX要求と，MIRD要求が投入される。
【００５４】
［キャッシュインジェクション動作の問題点］
図１１は，キャッシュインジェクション動作を示す図である。キャッシュインジェクションとは，図１のCPU１内の入出力制御部I/Oが，外部からのデータをメインメモリ３０に転送して書き込むときに，最下位レベルキャッシュ，図１の例ではL2キャッシュにもデータを登録する処理である。また，入出力制御部I/Oが，外部からのデータをメインメモリ３０に書き込むことなく，L2キャッシュにデータを登録する処理でもよい。このように，L2キャッシュにデータを登録しておけば，その後，CPUコアでデータ要求が発行された時に，メインメモリにアクセスすることなくL2キャッシュからデータを読み出すことができ，CPUの処理効率を向上することができる。
【００５５】
図１１に示されるとおり，入出力制御部I/OがデータD1をメインメモリ３０の物理アドレスPA1（PA_I1とPA_T1）にデータ登録することを要求する（S71)。それに応答して，L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1を検索用の物理アドレスPA_I1で検索して，キャッシュヒットすればその登録を消去する（S72)。さらに，L2キャッシュパイプラインは，MACを介してメインメモリ３０にデータD1を書き込む要求を行い（S73)，また，L2キャッシュにもそのデータD1を登録する（S74)。
【００５６】
キャッシュインジェクションの場合は，CPUコアからのデータ要求を伴わないため，仮想アドレスVAが伴わないデータの登録要求になる。そのため，L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1内の仮想アドレスには，正しい仮想アドレスを登録することができない。その場合，L2キャッシュパイプラインは，例えば検索アドレスである物理アドレスPA_I1を登録する場合がある。または，物理アドレスPA_I1以外のアドレスを登録してもよい。
【００５７】
いずれにしても，L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1内の仮想アドレスに正しくないアドレスを設定する。その結果，図７の工程S61及び図８の工程S7で現在のデータ要求の新仮想アドレスとL2キャッシュタグL2-TAG1内の仮想アドレスとを比較すると，不一致（UNMATCH)の判定結果になる。
【００５８】
この仮想アドレスが不一致の判定結果により，図８に示されるとおり，MOPORTからMOEX要求がL2キャッシュパイプラインに投入され（S12)，L1キャッシュタグコピーL1-TAG2を検索してキャッシュミスを起こし（S13,S62のミス），L1キャッシュにデータが登録されていないことが確認され，MIPORTからMIRD要求がL2キャッシュパイプラインに投入され（S19)，工程S20-S21,S27-S28が実行される。つまり，キャッシュインジェクション後のデータ要求では，L2キャッシュタグL2-TAG1内の旧仮想アドレスと新仮想アドレスの判定結果が不一致（シノニムヒット）になり，シノニム処理（OLD-VAの消去とNEW-VAの登録）が発生することで，処理効率が低下する。キャッシュインジェクション後のデータ要求では，L1キャッシュにはデータは未登録であるので，シノニム状態は発生していないのにもかかわらず，キャッシュインジェクション時のデータ登録要求では仮想アドレスが指定されないので，シノニムヒットとなり，上記の処理効率の低下を招いている。また，キャッシュインジェクションで大容量のデータがL2キャッシュに登録されると，その後のCPUコアからの連続するデータ要求に対して，上記の仮想アドレスの不一致によるシノニムヒットが頻発する。シノニムヒットが発生するたびに，L2キャッシュパイプラインにMOEX要求とMIRD要求が投入されるので，その処理低下の程度は深刻である。
【００５９】
したがって，キャッシュインジェクション後のデータ要求では，L2キャッシュは，図８の破線で囲った工程S12,S13,S19を無駄に実行するので，処理の低下を招いていた。
【００６０】
［本実施の形態］
そこで，本実施の形態では，L2キャッシュタグL2-TAG1内にキャッシュインジェクションにより登録されたことを示す情報を記録する領域を設ける。そして，L2キャッシュパイプラインが，キャッシュインジェクションによりL2キャッシュにデータを登録する際に，キャッシュインジェクション情報をオンに設定する。その後，CPUコアからのデータ要求が発行された場合，L1キャッシュでキャッシュミスし，L2キャッシュでキャッシュヒットする。このとき，L2キャッシュパイプラインは，シノニム判定を，L2キャッシュタグL2-TAG1内の旧仮想アドレスOLD-VAと現仮想アドレスNEW-VAとの比較結果と，キャッシュインジェクション情報とに基づいて行う。すなわち，シノニム判定では，仮想アドレスの比較結果が不一致（UNMATCH)であり，キャッシュインジェクション情報がオフの場合に，シノニムヒットと判定し，仮想アドレスの比較結果が不一致（UNMATCH)であっても，キャッシュインジェクション情報がオンの場合（キャッシュインジェクションにより書き込まれたことを示す場合）は，シノニムミスヒットと判定する。そして，L2キャッシュパイプラインは，シノニムミスヒットと判定されれば，図８の工程S7でVA MATCHとなった場合と同様に，READ要求の動作を継続して，工程S20-S21,S27-S28を実行する。
【００６１】
上記のキャッシュインジェクション情報がオンの状態は，L1キャッシュ状態情報であるL1タイプコードL1-TCが無効（INVALID)状態であることで検出することができる。一般に，L2キャッシュタグL2-TAG1内のL1タイプコードL1-TCには，L1キャッシュのデータが複数のCPUコアでシェアされているか（共有されているか），他のCPUコアとシェア可能か（共有可能か）などの状態情報が登録される。そして，L1キャッシュにデータが未登録の場合は，L1タイプコードL1-TCはいずれの状態でもない無効（INVALID)状態になる。そこで，このL1タイプコードが無効状態か否かにより，キャッシュインジェクションによりL2キャッシュまでしか登録されておらず，L1キャッシュには未登録であることを検出することができる。
【００６２】
従って，本実施の形態によれば，２次キャッシュ制御部は，１次キャッシュメモリ部でキャッシュミスした現在のアクセス要求に応答して，２次キャッシュタグでキャッシュヒットを判定した場合，２次キャッシュタグ内の１次キャッシュ状態情報が無効状態か否かに基づいて，１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去するシノニム処理を実行する。２次キャッシュ制御部は，２次キャッシュタグでキャッシュヒットを判定した場合，１次キャッシュ状態情報が有効状態であれば，シノニム処理を実行し，無効状態であればシノニム処理を行わない。以下，具体的に説明する。
【００６３】
図１２は，本実施の形態のキャッシュインジェクション後のデータ要求の動作を示す図である。キャッシュインジェクションでは，L2キャッシュにデータが登録されるがL1キャッシュには未だデータ登録されていない。したがって，図１２のキャッシュインジェクション後のデータ要求では，要求するデータD1はL1キャッシュには未登録であり，L2キャッシュに登録済みである。
【００６４】
図１２のL2キャッシュタグL2-TAG1内にはL1タイプコードL1-TCが記録されている。このL1タイプコードL1-TCの情報と仮想アドレスVAとに基づいて，L2キャッシュパイプラインは，シノニム状態の判定を行う。
【００６５】
図１４は，本実施の形態におけるフローチャート図である。図８のフローチャート図に対して，図１４のフローチャートは，工程S7で旧仮想アドレスOLD-VAと新仮想アドレスNEW-VAとが不一致（UNMATCH)の場合に，L2キャッシュタグL2-TAG1内のL1タイプコードL1-TCが無効状態（INVALID)か，無効状態以外の有効状態（VALID)か，を判定する工程S29が追加されている。また，工程Ｓ１３でのL1キャッシュタグコピーL1-TAG2の検索では必ずヒットになるので，ミスの経路がない。それ以外は図８と同じである。
【００６６】
したがって，L2キャッシュパイプラインは，工程S7での仮想アドレスの一致判定と，工程S29でのL1タイプコードL1-TCが無効状態か否かの判定とで，不一致（UNMATCH）で且つ有効状態であれば，図８と同様に工程S12-S21，S27-S28のシノニム処理を実行する。しかし，L2キャッシュパイプラインは，工程S7での仮想アドレスの一致判定で不一致（UNMATCH)になっても，工程S29でL1タイプコードL1-TCが無効状態であれば，工程S12-S19を実行せずに，工程S20-S21，S27-S28を実行する。この工程S20-S21，S27-S28は，工程S8-S11と実質的に同じである。つまり，L2キャッシュパイプラインは，新旧仮想アドレスが不一致でもL1タイプコードが無効状態であれば，工程S5で投入されたREAD要求を継続して実行して処理を完結することができる。つまり，図８のフローチャート図のように，工程S12，S19のL2キャッシュパイプラインにMOEX要求とMIRD要求を投入する必要はない。
【００６７】
［キャッシュインジェクション後のデータ要求における第５の動作］
図１５は，キャッシュインジェクション後のデータ要求の動作（第５の動作）を示すシーケンス図である。図１２，図１４，図１５を参照しながら，図１４に示されたキャッシュインジェクション後のデータ要求の第５の動作を説明する。
【００６８】
まず，演算制御部からのデータ要求は，仮想アドレスVA2を伴い物理アドレスPA_I1,PA_T1に対するデータD1について発行される（S51，S1)。これに応答して，L1キャッシュパイプラインがL1キャッシュタグL1-TAG1を仮想アドレスVA2で検索する（S52，S2)。タグには物理アドレスは未登録かまたはデータ要求の物理アドレスと異なるアドレスが格納されているので，アドレス変換部TLBが出力する物理アドレスPA_T1は，L1キャッシュタグL1-TAG1から読み出された物理アドレスと不一致になり，キャッシュミスとなる（S52，S2)。
【００６９】
そこで，L1キャッシュはL2キャッシュにデータ要求を発行し（S53，S4)，L2キャッシュではMIPORTからREAD要求がL2キャッシュパイプラインに投入される（S54，S5)。L2キャッシュパイプラインは，物理アドレスPA_I1でL2キャッシュタグL2-TAG1を検索し，キャッシュヒットを検出する（S55，S6)。このとき，L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1内の旧仮想アドレスPA_I1と現在のデータ要求の新仮想アドレスVA2とを比較して不一致（UNMATCH)を検出する（S61，S7)。ここで，L2キャッシュタグL2-TAG1内に旧仮想アドレスとして登録されているアドレスPA_I1は，キャッシュインジェクション要求時の物理アドレスPA_I1である。
【００７０】
そして，本実施の形態では，L2キャッシュパイプラインは，更に，キャッシュヒットしたL2キャッシュタグL2-TAG1内のL1タイプコードL1-TCを参照し，無効状態（INVALID)を検出する（S29）。その結果，L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1内のL1タイプコードL1-TCを有効状態に更新し，仮想アドレスVAを新仮想アドレスVA2に更新し（S20)，L1キャッシュタグコピーL1-TAG2をL2キャッシュタグL2-TAG1でキャッシュヒットしたデータの登録情報を登録し（S21)，L1キャッシュにデータ応答し（S27)，L1キャッシュにデータを登録させる。さらに，L1キャッシュは，CPUコアにデータ応答する（S28）。
【００７１】
図１５に示されるとおり，L2キャッシュパイプラインは，投入されたREAD要求を処理することで，L2キャッシュのデータをL1キャッシュに登録することができる。図１５の第５の動作の動作シーケンスは，図３の（１）の第１の動作の動作シーケンスとほぼ同じであり，L2キャッシュパイプラインにはREAD要求が投入されるだけである。また，図１５の第５の動作シーケンスは，図１０の第４の動作の動作シーケンスにおけるMOEX要求とMIRD要求を投入することによる工程S12,S13,S19が省略されている。
【００７２】
このように，本実施の形態では，L2キャッシュパイプライアンは，シノニムヒット判定に新旧仮想アドレスの比較判定S7に加えてL1タイプコードL1-TCが無効状態か否かの判定S29を実施することで，キャッシュインジェクションによる擬似的な新旧仮想アドレスの不一致状態と，本当の新旧仮想アドレスの不一致状態とを区別することができる。
【００７３】
［L1でミス，L2でヒット，VAが不一致，L1-TCが有効，L1-TAG2でヒットする場合の第３の動作（図１３）］
次に，本実施の形態における真にシノニム状態の場合の第３の動作について説明する。図１３は，本実施の形態の場合の第３の動作を示す図である。図１４においては，工程S1-S7,S29,S12-S21,S27-S28の動作になる。
【００７４】
図１３において，MIPORTからL2キャッシュパイプラインにREAD要求が投入される工程（S5,S54）後について説明する。L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1を物理アドレスPA_I1で検索し，キャッシュヒット判定する（S6，S55)。その際，L2キャッシュパイプラインは，L2キャッシュタグL2-TAG1から旧仮想アドレスVA1を読み出し新仮想アドレスVA2と比較し不一致（UNMATCH)を検出し（S7，S61)，更に，L1タイプコードL1-TCを読み出し有効状態を検出する（S29)。その結果，L2キャッシュパイプラインは，工程S12-S21を実行する。
【００７５】
L2キャッシュパイプラインは，L1キャッシュタグコピーL1-TAG2を旧仮想アドレスVA1で検索し，L2キャッシュタグL2-TAG1内の物理アドレスPA_T1と一致する物理アドレスPA_T1を格納するL1キャッシュ内のウエイ情報を取得する。但し，図１３には複数のウエイは示されていない。このL1キャッシュタグコピーL1-TAG2の旧仮想アドレスVA1による検索では，L1タイプコードL1-TCが有効状態であったので，必ずヒットする。
【００７６】
その後，L2キャッシュがL1キャッシュに旧仮想アドレスVA1と検出したL1キャッシュのウエイ情報に基づいてL1キャッシュの登録を消去するオーダを発行し（S14)，L1キャッシュの登録を消去させ（S15,S63)，L1キャッシュからL2キャッシュへのオーダ応答（S16)に応答して，要求投入部SELがL2キャッシュパイプラインにライトバック要求WRBKを投入し（S17)，L2キャッシュに必要であればライトバックし，L1キャッシュタグコピーL1-TAG2の登録を消去する（S18)。その後，工程S19-S21，S27-S28が実行される。
【００７７】
したがって，図９の第３の動作の動作シーケンスにおいて，L2キャッシュパイプラインは，仮想アドレスの比較判定（S7，S61)に加えて，L1タイプコードL1-TCが無効状態か否かの判定を行う。
【００７８】
［L1でミス，L2でヒット，VAが不一致，L1-TCが無効の場合の第４の動作］
図１０の第４の動作は，本実施の形態の図１４では，工程S1-S7，S29，S20-S21，S27-S28で実行される。つまり，工程S29でL1キャッシュタイプコードL1-TCが無効状態であることが判明し，L1キャッシュには旧仮想アドレスVA1の登録がないことが判明するので，旧仮想アドレスVA1の処理を行わずに，工程S20-S21，S27-S28で，新仮想アドレスVA2に対する登録処理を実行する。したがって，第４の動作も簡略化される。
【００７９】
本実施の形態では，L2キャッシュパイプラインは，真にシノニム状態か否かの判定を，新旧の仮想アドレスの比較判定と，L1タイプコードの無効状態か否かの判定で行う。L1タイプコードが無効状態であることは，L1キャッシュにはデータ登録がなされていないことを意味するので，キャッシュインジェクションによりL2キャッシュ登録された場合に加えて，他の何らかの要求によりL2キャッシュには登録されているがL1キャッシュには未登録である状態を検出することができる。その場合も，シノニム処理を回避することができる。
【００８０】
図１６は，本実施の形態におけるL2キャッシュパイプラインのシノニム判定とL2-TAG1のVA更新を行う論理回路を示す図である。図１６の（１）は図８のフローチャートに対応する論理回路であり，図１６の（２）は本実施の形態の図１４のフローチャートに対応する論理回路である。
【００８１】
図１６の（１）のアンドゲートAND1では，READ要求であること（S5)，L2キャッシュタグL2-TAG1で物理アドレスPAが一致してキャッシュヒットであること（S6のHIT)，そして，新旧仮想アドレスが不一致であったこと（S7のUNMATCH)が，シノニムヒット判定の条件である。また，オアゲートOR1では，MIRD要求（S19）またはMVIN要求（S24)の場合にL2キャッシュタグL2-TAG1の仮想アドレスVAを更新する（S20,S25)。
【００８２】
一方，図１６の（２）のアンドゲートAND2では，READ要求であること（S5)，L2キャッシュタグL2-TAG1で物理アドレスPAが一致してキャッシュヒットであること（S6のHIT)，新旧仮想アドレスが不一致であったこと（S7のUNMATCH)に加えて，L1タイプコードL1-TCが有効状態（VALID)であること（S29のVALID)が，シノニムヒット判定の条件である。そして，アンドゲートAND3では，READ要求であること（S5)，L2キャッシュタグL2-TAG1で物理アドレスPAが一致してキャッシュヒットであること（S6のHIT)，新旧仮想アドレスが不一致であったこと（S7のUNMATCH)に加えて，L1タイプコードL1-TCが無効状態（INVALID)であること（S29のINVALID)が，L2キャッシュタグL2-TAG1の仮想アドレスVAを更新する（S20)の条件になる。また，オアゲートOR2では，MIRD要求（S19）またはMVIN要求（S24)の場合に加えて，アンドゲートAND3の出力が真（１）の場合も，L2キャッシュタグL2-TAG1の仮想アドレスVAを更新する（S20,S25)。
【００８３】
図１７は，本実施の形態におけるL1キャッシュタグとL2キャッシュタグの具体例を示す図である。図１７には，L1キャッシュタグL1-TAGと，L2キャッシュタグL2-TAG1の構成例が示されている。前提として，アドレス変換部TLBは，4Kbyte（１２ビット）が変換単位である。従って，アドレス変換部TLBは，仮想アドレスVA[63:12]を物理アドレスPA[39:12]に変換する。そして，仮想アドレスと物理アドレスの下位１２ビットは共通（VA[11:0]=PA[11:0]）である。
【００８４】
L1キャッシュタグL1-TAGは，VA[15:7]をインデックスとして，それぞれに対応するタグ情報として物理アドレスPA[39:12」を各ウエイway0，way1別に格納する。そして，アドレス変換部TLBで物理アドレスPA[39:12]が出力され，タグ情報の物理アドレスPA[39:12]と比較される。尚，アドレス変換部の変換単位と，L1キャッシュのキャッシュブロック単位とは異なっている。
【００８５】
一方，L2キャッシュはL1キャッシュよりも大容量であるのでエントリ数も多い。その結果，L2キャッシュタグL2-TAG1は，PA[19:7]をインデックスとして，それぞれに対応するタグ情報として物理アドレスPA[39:20]を各ウエイ別に格納する。また，L2キャッシュのウエイ数は２４個とL1キャッシュのウエイ数２より多い。
【００８６】
図１８は，本実施の形態おけるL1キャッシュタグとL2キャッシュタグのデータフォーマットの具体例を示す図である。L2キャッシュタグL2-TAG1は，エラーチェック・訂正コードECC[6:0]と，L1タイプコードL1-TC[2:0]と，L2タイプコードL2-TC[1:0]と，L1キャッシュに登録されている仮想アドレスVA[15:12]と，物理アドレスPA[39:20]を格納する。仮想アドレスVA[15:12]は，L1キャッシュタグL1-TAGのインデックスよりビット数が少ないが，前述のとおりVA[11:0]=PA[11:0]であるので問題はない。
【００８７】
L1キャッシュタグコピーL1-TAG2は，データキャッシュの２つのウエイOPway0，OPway1と，命令キャッシュの２つのウエイIFway0，IFway1がそれぞれ２０ビットで構成され，その２０ビットは，エラーチェック・訂正コードECC[5:0]と，バリッドビットVと，物理アドレスPA[19:12]と，ウエイアドレスWAY[4:0]とで構成される。L2キャッシュはL1キャッシュのインクルージョンキャッシュであるので，物理アドレスPA[19:12]とウエイアドレスWAY[4:0]とで，物理アドレスPA[39:12]を表現することができる。
【００８８】
以上の通り，本実施の形態によれば，L2キャッシュタグL2-TAG1内に仮想アドレスVAに加えてL1タイプコードL1-TCを格納し，L1タイプコードL1-TCにL1キャッシュにデータ登録されていないことを示す無効状態（INVALID)を格納する。そして，キャッシュインジェクション後のデータ要求では，L2キャッシュパイプラインが，L2キャッシュタグL2-TAG1を検索してヒットした際に，新旧仮想アドレスVAの比較判定と，L1タイプコードL1-TCが無効状態か否かの判定を行うことで，キャッシュインジェクション後などの理由でL1キャッシュにデータが未登録の状態か，L1キャッシュタグに旧仮想アドレスVAで登録されているかを区別することができる。それにより，キャッシュインジェクション後のデータ要求では，L1キャッシュタグコピーL1-TAG2の検索を含むシノニム処理を省略することができる。
【００８９】
以上の実施の形態をまとめると，次の付記のとおりである。
【００９０】
（付記１）
仮想アドレスで検索される１次キャッシュタグ及び１次キャッシュデータメモリと，キャッシュ制御を行う１次キャッシュ制御部とを有する１次キャッシュメモリ部と，
物理アドレスで検索される２次キャッシュタグ及び２次キャッシュデータメモリと，キャッシュ制御を行う２次キャッシュ制御部とを有し，前記２次キャッシュ制御部が，前記１次キャッシュメモリ部がキャッシュミスを発生したアクセス要求に応答して，前記２次キャッシュタグでキャッシュヒットと判定した場合，前記２次キャッシュタグ内の１次キャッシュ状態情報に基づいて，前記１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去するシノニム処理を実行する２次キャッシュメモリ部とを有する演算処理装置。
【００９１】
（付記２）
付記１において，
前記２次キャッシュ制御部は，前記２次キャッシュタグ内の１次キャッシュ状態情報が無効状態の場合に，前記シノニム処理を実行せずに，前記キャッシュヒットしたデータを前記１次キャッシュメモリ部に応答し，有効状態の場合に，前記シノニム処理を実行し前記キャッシュヒットしたデータを前記１次キャッシュメモリ部に応答する演算処理装置。
【００９２】
（付記３）
付記１または２において，
前記２次キャッシュタグは，前記２次キャッシュメモリ部へのキャッシュ登録時のアクセス要求の旧仮想アドレスを記憶し，
前記２次キャッシュ制御部は，前記現在のアクセス要求に応答して，前記２次キャッシュタグでキャッシュヒットを判定した場合，前記現在のアクセス要求の新仮想アドレスが前記２次キャッシュタグ内に記憶されている旧仮想アドレスと一致しない場合に，前記１次キャッシュ状態情報が無効状態か否かに基づいて前記シノニム処理を実行する演算処理装置。
【００９３】
（付記４）
付記３において，
前記２次キャッシュ制御部は，前記１次キャッシュメモリ部でキャッシュミスした現在のアクセス要求に応答して，第１の要求をパイプライン処理して，２次キャッシュタグに基づくキャッシュヒット判定と，前記新仮想アドレスと旧仮想アドレスの比較判定と，前記１次キャッシュ状態情報の判定とを実行し，前記キャッシュヒット判定がキャッシュヒットで，前記比較判定が不一致で，前記１次キャッシュ状態情報が無効状態の場合に，前記２次キャッシュタグ内の旧仮想アドレスを新仮想アドレスに更新し，前記１次キャッシュ状態情報を有効状態に更新し，前記１次キャッシュメモリ部にデータ応答する演算処理装置。
【００９４】
（付記５）
付記４において，
前記２次キャッシュ制御部は，前記第１の要求をパイプライン処理するときに，前記２次キャッシュタグに基づくキャッシュヒット判定がキャッシュヒットで，前記比較判定が不一致で，前記１次キャッシュ状態情報が有効状態の場合に，前記シノニム処理に対応する第２の要求をパイプライン処理する演算処理装置。
【００９５】
（付記６）
付記４または５において，
前記２次キャッシュ制御部は，前記第１の要求をパイプライン処理するときに，前記２次キャッシュタグに基づくキャッシュヒット判定がキャッシュヒットで，前記比較判定が一致の場合に，前記２次キャッシュタグ内の１次キャッシュ状態情報を有効状態に更新し，前記１次キャッシュメモリ部にデータ応答する演算処理装置。
【００９６】
（付記７）
付記５において，
前記２次キャッシュメモリ部は，さらに，前記１次キャッシュタグのコピーである１次キャッシュタグコピーを有し，
前記２次キャッシュ制御部は，前記シノニム処理に対応する第２の要求（MOEX）のパイプライン処理において，前記コピー１次キャッシュタグを参照して，前記旧仮想アドレスに対応する登録情報を取得し，前記１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去する演算処理装置。
【００９７】
（付記８）
付記１において，
さらに，入出力制御部を有し，
さらに，前記アクセス要求の仮想アドレスを物理アドレスに変換するアドレス変換部を有し，
前記１次キャッシュ制御部は，前記アクセス要求の仮想アドレスに基づいて前記１次キャッシュタグから読み出した物理アドレスと，前記アドレス変換部で変換した物理アドレスとを比較し，一致するときにキャッシュヒット，不一致のときにキャッシュミスを検出する演算処理装置。
【００９８】
（付記９）
付記１において，
前記シノニム状態は，前記１次キャッシュメモリ部において同一の物理アドレスのデータに対して異なる仮想アドレスが割り当てられた状態を含む演算処理装置。
【００９９】
（付記１０）
付記１において，
前記２次キャッシュ制御部は，前記入出力制御部による外部からのデータ転送の際に，２次キャッシュタグ及び２次キャッシュデータメモリにデータ登録を行う演算処理装置。
【０１００】
（付記１１）
仮想アドレスで検索される１次キャッシュタグ及び１次キャッシュデータメモリと，キャッシュ制御を行う１次キャッシュ制御部とを有する１次キャッシュメモリ部と，
物理アドレスで検索される２次キャッシュタグ及び２次キャッシュデータメモリと，キャッシュ制御を行う２次キャッシュ制御部とを有する２次キャッシュメモリ部とを有する演算処理装置の制御方法であって，
前記１次キャッシュ制御部が，アクセス要求によりキャッシュミスを発生し，
前記１次キャッシュメモリ部がキャッシュミスした前記アクセス要求に応答して，前記２次キャッシュ制御部が，前記２次キャッシュタグでキャッシュヒットと判定した場合，前記２次キャッシュタグ内の１次キャッシュ状態情報に基づいて，前記１次キャッシュメモリ部内のシノニム状態にあるキャッシュ登録を消去するシノニム処理を実行する演算処理装置の制御方法。
【符号の説明】
【０１０１】
１：CPU，演算処理装置
１０：CPUコア，演算処理部
１２：演算装置，ALU
１４：１次キャッシュメモリ部，L1キャッシュ
１６：１次キャッシュパイプライン，１次キャッシュ制御部，L1キャッシュパイプライン
L1-TAG1：１次キャッシュタグ，L1キャッシュタグ
L1-DATA：１次キャッシュデータメモリ
TLB：アドレス変換部
２０：２次キャッシュメモリ部，L2キャッシュ
２２：２次キャッシュパイプライン，２次キャッシュ制御部，L2キャッシュパイプライン
２４：要求ロック部
MIPORT：ムーブインポート
MOPORT：ムーブアウトポート
SEL：要求投入部，セレクタ
L2-TAG1：２次キャッシュタグ，L2キャッシュタグ
L2-DATA：２次キャッシュデータメモリ
L1-TAG2：１次キャッシュタグコピー，L1キャッシュタグコピー
I/O：入出力制御部
MAC：メモリアクセスコントローラ
３０：メインメモリ
【図１】
2015191571.tif 000003
【図２】
2015191571.tif 000004
【図３】
2015191571.tif 000005
【図４】
2015191571.tif 000006
【図５】
2015191571.tif 000007
【図６】
2015191571.tif 000008
【図７】
2015191571.tif 000009
【図８】
2015191571.tif 000010
【図９】
2015191571.tif 000011
【図１０】
2015191571.tif 000012
【図１１】
2015191571.tif 000013
【図１２】
2015191571.tif 000014
【図１３】
2015191571.tif 000015
【図１４】
2015191571.tif 000016
【図１５】
2015191571.tif 000017
【図１６】
2015191571.tif 000018
【図１７】
2015191571.tif 000019
【図１８】
2015191571.tif 000020