(57)【特許請求の範囲】
【請求項１】
主記憶装置にアクセスするよう機能する処理装置と、
該処理装置に結合され該主記憶装置よりも高速にアクセス可能な１次キャッシュと、
該１次キャッシュを介して該処理装置に結合され該主記憶装置よりも高速にアクセス可能な２次キャッシュ
を含み、該１次キャッシュと該２次キャッシュは、該処理装置からのアクセスに応じて該主記憶装置から第１のデータを読み出す際に該１次キャッシュと該２次キャッシュとの両方に該第１のデータを登録し、該処理装置からのアクセスに応じて該２次キャッシュでミスして該２次キャッシュの第２のデータを置き換える際に該１次キャッシュに存在する該第２のデータを無効化することなく該２次キャッシュの該第２のデータを無効化する動作を実行するよう構成されることを特徴とするキャッシュシステム。
【請求項２】
該１次キャッシュと該２次キャッシュは、該処理装置からのアクセスに応じて該２次キャッシュから該１次キャッシュに第３のデータを転送して該１次キャッシュに該第３のデータを登録する際に、該２次キャッシュの該第３のデータを無効化する動作を実行するよう構成されることを特徴とする請求項１記載のキャッシュシステム。
【請求項３】
該主記憶装置にアクセスするよう機能する別の処理装置と、
該別の処理装置と該２次キャッシュとに結合される別の１次キャッシュ
を更に含むことを特徴とする請求項１記載のキャッシュシステム。
【請求項４】
該１次キャッシュに該別の１次キャッシュからデータを転送して登録する動作を実行するよう構成されることを特徴とする請求項３記載のキャッシュシステム。
【請求項５】
主記憶装置にアクセスするよう機能する処理装置と、
該処理装置に結合され該主記憶装置よりも高速にアクセス可能な１次キャッシュと、
該１次キャッシュを介して該処理装置に結合され該主記憶装置よりも高速にアクセス可能な２次キャッシュ
を含み、該１次キャッシュと該２次キャッシュは、該処理装置からのアクセスに応じて該２次キャッシュから該１次キャッシュに第１のデータを転送して該１次キャッシュに該第１のデータを登録する際に該２次キャッシュの該第１のデータを有効なまま残し、該処理装置からのアクセスに応じて該２次キャッシュでミスして該２次キャッシュの第２のデータを置き換える際に該１次キャッシュに存在する該第２のデータを無効化することなく該２次キャッシュの該第２のデータを無効化する動作を実行するよう構成されることを特徴とするキャッシュシステム。
【請求項６】
該１次キャッシュと該２次キャッシュは、該処理装置からのアクセスに応じて該主記憶装置から第３のデータを読み出す際に、第１の動作モードでは該１次キャッシュと該２次キャッシュとの両方に該第３のデータを登録し、第２の動作モードでは該２次キャッシュに該第３のデータを登録することなく該１次キャッシュに該第３のデータを登録するよう構成されることを特徴とする請求項５記載のキャッシュシステム。
【請求項７】
該主記憶装置にアクセスするよう機能する別の処理装置と、
該別の処理装置と該２次キャッシュとに結合される別の１次キャッシュ
を更に含むことを特徴とする請求項５記載のキャッシュシステム。
【請求項８】
該１次キャッシュに該別の１次キャッシュからデータを転送して登録する動作を実行するよう構成されることを特徴とする請求項７記載のキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にキャッシュシステムに関し、詳しくはキャッシュメモリが階層化されたキャッシュシステムに関する。
【背景技術】
【０００２】
コンピュータシステムにおいては一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。主記憶に記憶される情報の一部をキャッシュにコピーしておくことで、この情報をアクセスする場合には主記憶からではなくキャッシュから読み出すことで、高速な情報の読み出しが可能となる。
【０００３】
キャシュは複数のキャッシュラインを含み、主記憶からキャシュへの情報のコピーはキャシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
【０００４】
メモリ空間上のあるアドレスに最初のアクセスが実行されると、そのアドレスの情報（データやプログラム）をキャシュ内の対応するキャッシュラインにコピーする。同一アドレスに対して次のアクセスを実行する場合にはキャシュから直接に情報を読み出す。
【０００５】
例えば、１つのキャッシュラインが３２ビット長であるとすると、アドレスの最下位２ビットがアドレスオフセットとなり、それより上位に位置する所定数のビットがキャッシュのインデックスとなり、更にそれより上位に位置する残りのビットがキャッシュのタグとなる。
【０００６】
データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、キャッシュ中の対応するインデックスのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンが一致するか否かを判断する。一致しない場合にはキャッシュミスとなる。一致する場合には、当該インデックスに対応するキャッシュデータ（１キャッシュライン分の３２ビットのデータ）がアクセスされる。例えば読み出しの動作の場合には、当該３２ビットのデータのうちでアドレス中のオフセット部分が示すバイトを選択し、キャッシュからの読み出しデータとする。
【０００７】
各キャッシュラインに対して１つだけタグを設けたキャッシュの構成を、ダイレクトマッピング方式と呼ぶ。各キャッシュラインに対してＮ個のタグを設けたキャッシュの構成をＮウェイセットアソシアティブと呼ぶ。ダイレクトマッピング方式は１ウェイセットアソシアティブとみなすことができる。
【０００８】
ライトスルー方式では、データをメモリに書き込む際に、キャッシュへの書き込みとともに主記憶にも書き込みを行う。この方式では、キャッシュの内容を置き換える必要が生じても、データの有効／無効を示す有効ビットを無効化するだけでよい。それに対してライトバック方式では、データをメモリに書き込む際に、キャッシュへの書き込みのみを行う。書き込んだデータはキャッシュメモリ上にしか存在しないので、キャッシュの内容を置き換える際には、キャッシュメモリの内容を主記憶にコピーする必要がある。
【０００９】
キャッシュミスが発生した場合に、主記憶にアクセスすることによるペナルティーを軽減するために、キャッシュメモリを多階層化したシステムが用いられる。例えば、１次キャッシュと主記憶との間に、主記憶よりは高速にアクセスできる２次キャッシュを設けることにより、１次キャッシュにおいてキャッシュミスが発生した場合に、主記憶にアクセスが必要になる頻度を低くして、キャッシュミス・ペナルティーを軽減することができる。
【００１０】
多階層キャッシュシステムの構成は、キャッシュ間のデータの包含関係という点から考えると、以下の３種類に大別できる。なおここでは２階層のキャッシュシステムを考え、演算器に近い方を１次キャッシュ、主記憶に近い方を２次キャッシュとする。一般的には、１次キャッシュは小容量・高速であり、２次キャッシュは大容量・低速である。
（１）インクルーシブ・キャッシュ
１次キャッシュの格納内容が全て常に２次キャッシュに格納されているキャッシュシステムを、インクルーシブ・キャッシュと呼ぶ。２次キャッシュの内容が１次キャッシュの内容を包含していることになる。最も単純な構成であり、キャッシュの動作を制御する論理を組み立て易いという利点がある。実効キャッシュ容量が総キャッシュ容量（２次キャッシュサイズ+１次キャッシュサイズ）よりも小さく、最大で２次キャッシュサイズに制限されるという欠点がある。
（２）イクスクルーシブ・キャッシュ
全てのキャッシュの格納内容が１次キャッシュ又は２次キャッシュの何れか一方にのみ格納されるキャッシュシステムを、イクスクルーシブ・キャッシュと呼ぶ。１次キャッシュの内容と２次キャッシュの内容とが排他的であることになる。実効キャッシュ容量が総キャッシュ容量に等しく、３つの方式の中で最もメモリ使用効率が良い。しかしながら、１次キャッシュの内容の置換を全て２次キャッシュに反映させなければならないなど、制御動作の上でのデメリットが多い。また１次キャッシュの内容の置換処理が頻発すると、演算器に対するデータ供給を阻害し、性能低下につながる可能性がある。
（３）ノン・インクルーシブ・キャッシュ（パーシャリ・インクルーシブ・キャッシュ）
基本的にはインクルーシブ・キャッシュであるが、包含関係を維持することを絶対条件とせず、１次キャッシュの内容が２次キャッシュに含まれない状態の存在を許すキャッシュシステムを、ノン・インクルーシブ・キャッシュ方式と呼ぶ。基本的にはイクスクルーシブ・キャッシュであるが、排他関係を維持することを絶対条件とせず、１次キャッシュの内容が２次キャッシュに含まれる状態の存在を許す構成であってもよい。実効キャッシュ容量はインクルーシブ・キャッシュとイクスクルーシブ・キャッシュとの中間となる。制御動作を実装する困難さも中間程度である。包含関係（又は排他関係）を維持するための処理が少なくてすむので、そのような処理に起因する１次キャッシュの性能低下が小さくなる。
【００１１】
組込み向けプロセッサの分野においても、多階層キャッシュシステムが一般化する傾向にある。組込み分野では、チップの面積コストは非常に高く、チップ内に実装したＲＡＭをできるだけ有効に使うことが要求される。従って、インクルーシブよりもノン・インクルーシブが好ましく、更にノン・インクルーシブよりもイクスクルーシブが望ましい。しかしながら、一般に組込み分野でのチップの開発期間は非常に短いので、開発工程及び検証工程を多く必要とするイクスクルーシブ・キャッシュは望ましくない方式である。
【００１２】
従って特に組込み分野においては、ノン・インクルーシブのように、キャッシュ容量を比較的有効に使用することができ、且つ開発時間が比較的短い方式が望ましい。
【００１３】
ノン・インクルーシブの一例が、特許文献１に示されている。また、キャッシュの包含関係に関し、２次キャッシュから１次キャッシュへの無効化処理を削減する方式が、特許文献２に示される。
【００１４】
特許文献１に示される方式では、効果的にノン・インクルーシブを実現するために、１次キャッシュの格納内容が２次キャッシュに含まれるか否かを示す情報を、１次キャッシュのタグに追加する必要がある。これにより、制御動作が容易であるというノン・インクルーシブ方式の効果が増すが、１次キャッシュに追加の論理が必要となり、開発工数は増加する恐れがある。
【特許文献１】米国特許第５，５６４，０３５号公報
【特許文献２】特開平６−１６１８８７号公報
【特許文献３】特許第２９０５１１８号公報
【特許文献４】特開平５−３２４４７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、実現が容易なノン・インクルーシブ方式のキャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明によるキャッシュシステムは、主記憶装置にアクセスするよう機能する処理装置と、該処理装置に結合され該主記憶装置よりも高速にアクセス可能な１次キャッシュと、該１次キャッシュを介して該処理装置に結合され該主記憶装置よりも高速にアクセス可能な２次キャッシュを含み、該１次キャッシュと該２次キャッシュは、該処理装置からのアクセスに応じて該主記憶装置から第１のデータを読み出す際に該１次キャッシュと該２次キャッシュとの両方に該第１のデータを登録し、該処理装置からのアクセスに応じて該２次キャッシュでミスして該２次キャッシュの第２のデータを置き換える際に該１次キャッシュに存在する該第２のデータを無効化することなく該２次キャッシュの該第２のデータを無効化する動作を実行するよう構成されることを特徴とする
【００１７】
また本発明の別の側面によれば、キャッシュシステムは、主記憶装置にアクセスするよう機能する処理装置と、該処理装置に結合され該主記憶装置よりも高速にアクセス可能な１次キャッシュと、該１次キャッシュを介して該処理装置に結合され該主記憶装置よりも高速にアクセス可能な２次キャッシュを含み、該１次キャッシュと該２次キャッシュは、該処理装置からのアクセスに応じて該２次キャッシュから該１次キャッシュに第１のデータを転送して該１次キャッシュに該第１のデータを登録する際に該２次キャッシュの該第１のデータを有効なまま残し、該処理装置からのアクセスに応じて該２次キャッシュでミスして該２次キャッシュの第２のデータを置き換える際に該１次キャッシュに存在する該第２のデータを無効化することなく該２次キャッシュの該第２のデータを無効化する動作を実行するよう構成されることを特徴とする。
【発明の効果】
【００１８】
本発明の少なくとも１つの実施例によれば、基本的にはインクルーシブ・キャッシュの動作を実行するが、２次キャッシュのデータの置き換え時に、１次キャッシュに対する当該データの無効化処理を省略することにより、包含関係が崩れることを容認する。このようにして１次キャッシュに対する無効化処理を省略することにより、キャッシュの制御動作の簡略化による性能向上が実現できる。また２次キャッシュのデータの置き換え時に１次キャッシュに対する当該データの無効化処理を省略するという制御は極めて単純であるので、キャッシュシステムの実装が容易であり短期間で開発することができる。
【発明を実施するための最良の形態】
【００１９】
本発明では、以下の基本的な動作によりノン・インクルーシブ・キャッシュを実現する。（１）主記憶から格納情報（データ又はプログラム：以下データと呼ぶ）をフェッチして１次キャッシュに新規登録する際に、２次キャッシュにも当該データを登録する。
（２）２次キャッシュのデータを置き換える場合に、１次キャッシュに当該データが存在しても、当該データを１次キャッシュにおいて無効化しない。
【００２０】
上記（１）の動作はインクルーシブ・キャッシュにおける一般的な動作である。本発明のキャッシュシステムでは、主記憶からの新規データ登録時に、インクルーシブ・キャッシュの動作と同一の動作を実行することにより、基本的には１次キャッシュのデータが２次キャッシュに存在するという包含関係を作り出す。なお（１）の動作は、絶対的に必須なものではなく、例外があってもよい。また基本的にインクルーシブ・キャッシュと同様の包含関係を作り出すよう機能する他の動作があれば、その動作を実行するような構成であってもよい。
【００２１】
上記（２）の動作はインクルーシブ・キャッシュの包含関係を崩す動作である。従来のインクルーシブ・キャッシュにおいては、２次キャッシュのデータを置換する場合に、１次キャッシュに当該データが存在するのであれば、包含関係を維持するために当該データを１次キャッシュにおいても無効化（消去）する必要がある。それに対して本発明では、２次キャッシュからデータを追い出す場合に、１次キャッシュにおいて当該データを無効化する処理は実行しない。これにより、１次キャッシュと２次キャッシュとの間の包含関係が崩れることになる。
【００２２】
このように本発明では、基本的にはインクルーシブ・キャッシュの動作を実行するが、２次キャッシュのデータの置き換え時に、１次キャッシュに対する当該データの無効化処理を省略することにより、包含関係が崩れることを容認する。このようにして１次キャッシュに対する無効化処理を省略することにより、キャッシュの制御動作の簡略化による性能向上が実現できる。また２次キャッシュのデータの置き換え時に１次キャッシュに対する当該データの無効化処理を省略するという制御は極めて単純であるので、キャッシュシステムの実装が容易であり短期間で開発することができる。
【００２３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００２４】
図１は、本発明によるキャッシュシステムの第１の実施例の構成を示す図である。図１には、１つの１次キャッシュ及び１つの２次キャッシュが設けられた構成を例として示すが、キャッシュの階層の数及び各階層でのキャッシュの数は図に示す例に限定されるものではない。
【００２５】
図１のキャッシュシステムは、ＣＰＵ１０、主記憶装置１１、アドレスバス１２、データバス１３、１次キャッシュ（Ｌ１）１４、及び２次キャッシュ（Ｌ２）１５を含む。１次キャッシュ１４と２次キャッシュ１５の各々は、タグレジスタ部分２１、データレジスタ部分２２、判定ユニット２３、及びコントローラ２４を含む。なお図示されるデータバス１３の構成は、説明のために論理的なデータの流れを示すものであり、物理的な接続を示すものではない。
【００２６】
図２は、１次キャッシュ１４又は２次キャッシュ１５の動作を説明するための図である。例えば、１つのキャッシュラインが３２ビット長であるとすると、アドレスの最下位２ビットがアドレスオフセットとなり、それより上位に位置する所定数のビットがキャッシュのインデックスとなり、更にそれより上位に位置する残りのビットがキャッシュのタグとなる。
【００２７】
データをアクセスする場合には、アドレスバス１２から供給されるアクセス先を示すアドレス中のインデックス部分を用いて、タグレジスタ部分２１の対応するインデックスのタグを読み出す。読み出したタグと、供給されたアドレス中のタグ部分のビットパターンが一致するか否かを、判定ユニット２３の比較器２３ａで判断する。比較結果が一致を示し、且つタグレジスタ部分２１の当該インデックスの有効ビットｖａｌｉｄが有効値“１”であれば、判定ユニット２３のＡＮＤ論理２３ｂの出力がアサートされる。この判定ユニット２３の出力により、キャッシュに対してアクセスがヒットしたかミスしたかを判定することができる。
【００２８】
判定ユニット２３の判定結果に応じてコントローラ２４がキャッシュの各部分を制御する。例えば読み出し動作においてアクセスがヒットした場合には、コントローラ２４の制御により、データレジスタ部分２２から当該インデックスに対応するデータ（１キャッシュライン分の３２ビットのデータ）を、データバス１３に読み出す。このデータから、読み出しアドレス中のオフセット部分が示すバイトをセレクタ２５により選択し、キャッシュからの読み出しデータとする。なお判定ユニット２３は、コントローラ２４の一部であるように構成されてもよいことは当然である。
【００２９】
コントローラ２４は、キャッシュ管理に関わる種々の制御動作を実行する。例えば、有効ビットの設定をしたり、タグの設定をしたり、有効ビットをチェックすることで利用可能なキャッシュラインを検索したり、例えばＬＲＵ（least recently used）アルゴリズム等に基づいて置換対象となるキャッシュラインを選択したり、データレジスタ部分２２へのデータ書き込み動作を制御したりする。
【００３０】
図１を再び参照し、ＣＰＵ１０は、アドレスバス１２にアクセス先のアドレスを送出して、メモリ空間に対する読み出し・書き込み動作を実行する。ＣＰＵ１０がメモリ空間上のあるアドレスにアクセスを実行すると、まず１次キャッシュ１４に当該アドレスのデータが格納されているか否かが判断される。これは１次キャッシュ１４のタグレジスタ部分２１のタグ情報に基づいて、判定ユニット２３及びコントローラ２４が判断する。１次キャッシュ１４に当該アドレスのデータが格納されていれば、読み出し動作の場合には、そのデータがデータレジスタ部分２２からデータバス１３を介してＣＰＵ１０に供給される。書き込み動作の場合には、ＣＰＵ１０からデータバス１３を介して供給される書き込みデータで、ヒットしたキャッシュのデータを書き換える。
【００３１】
１次キャッシュ１４に当該アドレスのデータが格納されていない場合には、２次キャッシュ１５に当該アドレスのデータが格納されているか否かが判断される。これは２次キャッシュ１５のタグレジスタ部分２１のタグ情報に基づいて、判定ユニット２３及びコントローラ２４が判断する。２次キャッシュ１５に当該アドレスのデータが格納されていれば、読み出し動作の場合には、そのデータがデータレジスタ部分２２からデータバス１３を介してＣＰＵ１０に供給される。更に当該データは、データバス１３を介して１次キャッシュ１４に供給され、１次キャッシュ１４に登録される。即ち、データが１次キャッシュ１４のデータレジスタ部分２２に格納されるとともに、対応するタグが１次キャッシュ１４のタグレジスタ部分２１に格納され、更に対応有効ビットが有効にされる。書き込み動作の場合には、ＣＰＵ１０からデータバス１３を介して供給される書き込みデータで、ヒットしたキャッシュのデータを書き換える。
【００３２】
１次キャッシュ１４にも２次キャッシュ１５にも当該アドレスのデータが格納されていない場合には、そのアドレスに格納されているデータを主記憶装置１１からデータバス１３を介して読み出し、キャシュ内の対応するキャッシュラインにコピーする。本発明においては、この際に基本的にインクルーシブ・キャッシュ方式と同一の動作を実行するので、主記憶装置１１から読み出したデータを２次キャッシュ１５及び１次キャッシュ１４の両方に登録する。読み出し動作の場合、ＣＰＵ１０は、データバス１３を介して供給されたデータを取り込む。書き込み動作の場合、ＣＰＵ１０は、キャッシュにコピーされたデータを書き換える。
【００３３】
データ書き込みの場合、ライトスルー方式では、データを書き込む際に、１次キャッシュ１４及び／又は２次キャッシュ１５への書き込みとともに主記憶装置１１にも書き込みを行う。この方式では、キャッシュの内容を置き換える必要が生じても、データの有効／無効を示す有効ビットを無効化するだけでよい。それに対してライトバック方式では、データを書き込む際に、１次キャッシュ１４及び／又は２次キャッシュ１５への書き込みのみを行う。書き込んだデータはキャッシュメモリ上にしか存在しないので、キャッシュの内容を置き換える際には、キャッシュメモリの内容を主記憶装置１１にコピーする必要がある。この場合、キャッシュの内容と主記憶装置１１の内容とが一致しているか否かを示すために、タグレジスタ部分２１に設定されるダーティービットと呼ばれる１ビットの情報が利用される。
【００３４】
図３は、メモリアクセスが、１次キャッシュをミスした後に２次キャッシュに対して実行される場合の処理を示すフローチャートである。ステップＳ１において、２次キャッシュ（Ｌ２）１５のタグを検索する。ヒットした場合には、ステップＳ２において、２次キャッシュ１５でヒットしたデータを１次キャッシュ１４に登録する。即ち、データを１次キャッシュ１４のデータレジスタ部分２２に格納するとともに、対応するタグを１次キャッシュ１４のタグレジスタ部分２１に格納し、更に対応有効ビットを有効にする。
【００３５】
ステップＳ１において、タグ検索の結果ミスした場合には、ステップＳ３で２次キャッシュ１５のリプレース処理（置き換え処理）が実行される。これについては後ほど説明する。リプレース処理の後、主記憶装置１１をアクセスしてデータを読み出し、読み出したデータを２次キャッシュ１５に登録するとともに１次キャッシュ１４に登録する。
【００３６】
以上の処理は、前述のように、インクルーシブ・キャッシュ方式と同一の動作であり、主記憶装置１１から読み出したデータを２次キャッシュ１５及び１次キャッシュ１４の両方に登録する。
【００３７】
図４は、図３のステップＳ３に示すリプレース処理の詳細を示すフローチャートである。ステップＳ１において、無効ｗａｙの有無を検索する。即ち、セットアソシアティブ方式の場合に、アクセス先のアドレスのインデックスに対応する各ｗａｙ（各セット）の有効ビットをチェックして、利用可能なキャッシュ領域が存在するか否かを判定する。利用可能なキャッシュ領域が存在する場合には、処理を終了する。
【００３８】
利用可能なキャッシュ領域が存在する場合には、ステップＳ２において、置き換える対象となるｗａｙ（セット）を選択する。即ち置き換える対象となるキャッシュラインを選択する。これは任意のアルゴリズムにより選択すればよいが、例えばＬＲＵルゴリズム等を用いてよい。ステップＳ３において、２次キャッシュ（Ｌ２）１５の選択されたキャッシュラインの内容を主記憶装置１１に転送する。これはライトバック方式の場合であり、ダーティービットがダーティー（不一致）を示す場合に実行される。ライトスルー方式の場合であれば、キャッシュラインの内容を主記憶装置１１に転送する必要はない。ステップＳ３においては、２次キャッシュ１５の選択されたキャッシュラインを無効化する。即ち、選択されたｗａｙにおけるアクセス先アドレスのインデックスに対応する有効ビットに、無効を示す値を設定する。これにより選択されたキャッシュラインが利用可能となる。以上でリプレース処理を終了する。
【００３９】
本発明においては、図４のステップＳ３において、２次キャッシュ１５の無効化のみを実行し、１次キャッシュ１４における対応するデータの無効化は実行しない。即ち、２次キャッシュ１５内のあるデータについては置き換えにより消去するが、１次キャッシュ１４に当該データが存在する場合であっても、そのデータはそのまま１次キャッシュ１４に格納し続ける。これにより１次キャッシュ１４と２次キャッシュ１５との包含関係が崩れることになる。
【００４０】
図５は、１次キャッシュ１４と２次キャッシュ１５との包含関係が崩れる様子を説明するための図である。タイミングＴ１は、初期状態であり、１次キャッシュ（Ｌ１）１４及び２次キャッシュ（Ｌ２）１５にはデータは格納されていない。ここでアドレスＡに対するデータがＣＰＵから要求されたとする。この要求に応じて、１次キャッシュ１４及び２次キャッシュ１５にアドレスＡのデータが登録される。登録されたアドレスＡのデータを、タイミングＴ２において“Ａ”として示してある。
【００４１】
その後、アドレスＢに対するデータがＣＰＵから要求される。この要求に応じて、１次キャッシュ１４及び２次キャッシュ１５にアドレスＢのデータが登録される。登録されたアドレスＢのデータを、タイミングＴ３において“Ｂ”として示してある。
【００４２】
その後、アドレスＣに対するデータがＣＰＵから要求される。この際に、１次キャッシュ１４においてはアドレスＣのインデックスとアドレスＢのインデックスは異なるが、２次キャッシュ１５においてはアドレスＣのインデックスとアドレスＢのインデックスとが同一であるとする。このような状況は、例えば１次キャッシュ１４と２次キャッシュ１５とでインデックス方式が異なる場合に発生する。即ち、例えば１次キャッシュ１４については物理アドレスに基づいたインデックスが使用され、２次キャッシュ１５については論理アドレスに基づいたインデックスが使用されている場合がこれにあたる。また例えば、一方のインデックスがリニアに割当てられ、他方のインデックスがハッシュ方式により割当てられる場合等もこれに該当する。また例えば、１次キャッシュ１４と２次キャッシュ１５とで連想度（ｗａｙ数）が異なる場合にも上記の状況は発生し得る。
【００４３】
１次キャッシュ１４においてはアドレスＣのインデックスとアドレスＢのインデックスは異なるので、アドレスＢのデータを置き換えることなく、アドレスＣのデータを登録することができる。それに対して、２次キャッシュ１５においてはアドレスＣのインデックスとアドレスＢのインデックスとが同一であり、アドレスＢのデータを置き換える形でアドレスＣのデータを登録することになる。登録されたアドレスＣのデータを、タイミングＴ４において“Ｃ”として示してある。なおこの説明では、簡単のためにダイレクトマップ方式であるかのようにしてアドレスＢのデータの置き換えを説明したが、セットアソシアティブ方式の場合であっても、全てのｗａｙが有効データで埋まっていると考えればアドレスＢのデータの置き換えが発生し得る。
【００４４】
このようにして、タイミングＴ４においては、アドレスＢのデータが１次キャッシュ１４には存在するが、２次キャッシュ１５には存在しない状態が生成される。即ち、１次キャッシュ１４と２次キャッシュ１５との包含関係が崩れて、ノン・インクルーシブ方式のキャッシュの構成となっている。しかもこの状態は、２次キャッシュ１５のデータを置き換えたときに、１次キャッシュ１４について対応するデータを置き換えるという動作を省略することにより達成される。即ち、従来のインクルーシブ方式で実行されていた動作を省略することにより、容易にノン・インクルーシブ方式を実現することが可能となる。
【００４５】
図６は、本発明によるキャッシュシステムの第２の実施例の構成を示す図である。図６はマルチコア構成のシステムを示し、図の構成例は、２つのＣＰＵ１０Ａ及び１０Ｂ、２つの１次キャッシュ１４Ａ及び１４Ｂ、１つの２次キャッシュ１５、及び主記憶装置１１を含む。
【００４６】
このように２次キャッシュを共有するマルチコア構成では、コア数が増加（２次キャッシュの配下にある１次キャッシュの数が増加）するにつれて、複数のコアからの要求が競合する頻度が増え、２次キャッシュにおけるキャッシュミスが増加する。２次キャッシュでの置き換え処理が１次キャッシュに影響しない本発明のキャッシュ制御方式は、このような２次キャッシュでの競合に起因するキャッシュミスに伴う１次キャッシュでの無効化を不用とし、制御処理の負担を削減することができる。
【００４７】
図７は、図６のようなマルチコア構成において、メモリアクセスが１次キャッシュ１４Ａをミスした後に２次キャッシュ１５に対して実行される場合の処理を示すフローチャートである。
【００４８】
ステップＳ１において、２次キャッシュ（Ｌ２）１５のタグを検索する。ヒットした場合には、ステップＳ２において、２次キャッシュ１５でヒットしたデータを１次キャッシュ１４Ａに登録する。即ち、データを１次キャッシュ１４Ａのデータレジスタ部分に格納するとともに、対応するタグを１次キャッシュ１４Ａのタグレジスタ部分に格納し、更に対応有効ビットを有効にする。
【００４９】
ステップＳ１において、タグ検索の結果ミスした場合には、他の１次キャッシュ（Ｌ１）にアクセス対象のデータが存在するか否かを判断する。即ち図６の構成の場合、１次キャッシュ１４Ａでミスして２次キャッシュ１５でもミスした場合、他の１次キャッシュ１４Ｂのタグを検索してヒットするか否かを判断する。他の１次キャッシュ１４Ｂにデータが存在する場合には、ステップＳ４において、他の１次キャッシュ（Ｌ１）１４Ｂでヒットしたデータを１次キャッシュ（Ｌ１）１４Ａに登録する。
【００５０】
他の１次キャッシュ（Ｌ１）にもデータが存在しない場合には、ステップＳ５で無効ラインが存在するか否かが判断される。存在しない場合には、ステップＳ６でソフトウェアによりＬ２登録指示があるか否か判断する。
【００５１】
ステップＳ６でＬ２登録指示がないと判断された場合には、ステップＳ７で、主記憶装置１１をアクセスしてデータを読み出し、読み出したデータを１次キャッシュ１４Ａにのみ登録する。２次キャッシュ１５には登録しない。
【００５２】
ステップＳ５で無効ラインが存在すると判断された場合、ステップＳ８でリプレース処理を実行して、必要に応じて２次キャッシュ１５の無効ラインのキャッシュデータを主記憶装置１１に転送する。またステップＳ６でＬ２登録指示があると判断された場合も、ステップＳ８でリプレース処理を実行して、２次キャッシュ１５において置き換え対象となるキャッシュラインを選択し、必要に応じて当該キャッシュラインのデータを主記憶装置１１に転送するとともに、当該キャッシュラインを無効化する。その後、ステップＳ９で、主記憶装置１１をアクセスしてデータを読み出し、読み出したデータを２次キャッシュ１５に登録するとともに１次キャッシュ１４Ａに登録する。
【００５３】
上記の処理においては、２次キャッシュに無効なラインが存在せず、且つソフトウェアにより２次キャッシュへの非登録が指示されている場合、主記憶から１次キャッシュへのデータ登録は行うが、２次キャッシュへのデータ登録は実行しない。これは、本発明ではノン・インクルーシブ方式であるので、１次キャッシュへの登録時に必ずしも２次キャッシュに同一のデータを登録する必要はないからである。なおソフトウェアによる指示を実現するには、専用の制御レジスタを設けて２次キャッシュへの登録／非登録を指示するデータを設定したり、或いは命令セットを拡張して２次キャッシュへの登録／非登録を示すロード／ストア命令を追加したりすることが考えられる。
【００５４】
このようなソフトウェアによるＬ２登録指示制御は、第１の実施例の構成にも適用可能な制御方式である。本願発明では、２次キャッシュ１５のデータ置き換え時に１次キャッシュ１４の対応データの無効化をしないことが重要であり、主記憶装置１１からの新規データ登録時に、１次キャッシュ１４と２次キャッシュ１５との両方に登録することは、基本的に実行される動作であるが、極論すれば絶対に必要な動作ではない。
【００５５】
なお本発明では、ライトスルー方式或いはライトバック方式の何れを採用してもよいが、ライトバック方式を採用した場合、包含関係が保障されないノン・インクルーシブ方式では、１次キャッシュ１４のデータ置き換え時に、主記憶装置１１へのデータ転送が必要になる場合がある。また本発明では、２次キャッシュからデータを転送してきて、１次キャッシュに新規登録する際に、２次キャッシュを無効化する必要はない。しかし２次キャッシュからデータを転送してきて、１次キャッシュに新規登録する際に、２次キャッシュを無効化する構成としてもよい。またマルチコア構成で、ある１次キャッシュから別の１次キャッシュにデータを転送して登録する際に、２次キャッシュにはデータを登録する必要はないが、２次キャッシュに当該データを登録する構成としてもよい。
【００５６】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００５７】
【図１】本発明によるキャッシュシステムの第１の実施例の構成を示す図である。
【図２】１次キャッシュ又は２次キャッシュの動作を説明するための図である。
【図３】メモリアクセスが１次キャッシュをミスした後に２次キャッシュに対して実行される場合の処理を示すフローチャートである。
【図４】図３のステップＳ３に示すリプレース処理の詳細を示すフローチャートである。
【図５】１次キャッシュと２次キャッシュとの包含関係が崩れる様子を説明するための図である。
【図６】本発明によるキャッシュシステムの第２の実施例の構成を示す図である。
【図７】図６のようなマルチコア構成において、メモリアクセスが１次キャッシュをミスした後に２次キャッシュに対して実行される場合の処理を示すフローチャートである。
【符号の説明】
【００５８】
１０  ＣＰＵ
１１  主記憶装置
１２  アドレスバス
１３  データバス
１４  １次キャッシュ（Ｌ１）
１５  ２次キャッシュ（Ｌ２）
２１  タグレジスタ部分
２２  データレジスタ部分
２３  判定ユニット
２４  コントローラ
【図１】
0005319049.tif 000002
【図２】
0005319049.tif 000003
【図３】
0005319049.tif 000004
【図４】
0005319049.tif 000005
【図５】
0005319049.tif 000006
【図６】
0005319049.tif 000007
【図７】
0005319049.tif 000008