(57)【要約】【課題】本発明は、システムの性能低下及び回路規模の増大を最小限に抑えることが可能な共用２次キャッシュ及びキャッシュシステムを提供することを目的とする。【解決手段】キャッシュシステムは、主記憶装置にアクセスするよう機能する複数の処理装置と、複数の処理装置にそれぞれ結合され処理装置から主記憶装置よりも高速にアクセス可能な複数の１次キャッシュと、複数の１次キャッシュを介して複数の処理装置に結合され複数の処理装置から主記憶装置よりも高速にアクセス可能な１つの共用２次キャッシュを含み、共用２次キャッシュは、複数のエントリを格納する記憶素子と、複数のエントリの各々に対して設けられ複数の処理装置に一対一に対応する複数のフラグを含み、あるエントリの複数のフラグは対応する処理装置がそのエントリを使用中であるか否かを示すことを特徴とする。【選択図】図２
2007156821.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置にアクセスするよう機能する複数の処理装置と、
該複数の処理装置にそれぞれ結合され該処理装置から該主記憶装置よりも高速にアクセス可能な複数の１次キャッシュと、
該複数の１次キャッシュを介して該複数の処理装置に結合され該複数の処理装置から該主記憶装置よりも高速にアクセス可能な１つの共用２次キャッシュ
を含み、該共用２次キャッシュは、
複数のエントリを格納する記憶素子と、
該複数のエントリの各々に対して設けられ該複数の処理装置に一対一に対応する複数のフラグ
を含み、一のエントリの該複数のフラグは対応する処理装置が該一のエントリを使用中であるか否かを示すことを特徴とするキャッシュシステム。
【請求項２】
該共用２次キャッシュは、該複数のエントリを１つずつ順次選択し、該選択したエントリに対応する該複数のフラグのうちの指定のフラグを参照することで、該指定のフラグに対応する処理装置が使用中であるエントリを検索するよう機能するコントローラを更に含むことを特徴とする請求項１記載のキャッシュシステム。
【請求項３】
該共用２次キャッシュは、
該複数の処理装置のうちの１つからのアクセス要求に応じて該複数のエントリの１つを選択する第１の回路と、
該コントローラによるエントリ検索において該複数のエントリを１つずつ順次選択する第２の回路
を更に含み、該第１の回路と該第２の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項２記載のキャッシュシステム。
【請求項４】
該共用２次キャッシュは、
該コントローラによるエントリ検索において該複数のエントリを１つずつ順次選択する第３の回路
を更に含み、該第２の回路と該第３の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項３記載のキャッシュシステム。
【請求項５】
該共用２次キャッシュは、該複数の処理装置のうちの１つが該複数のエントリの１つをアクセスするとそれに応答して、該アクセスされたエントリの該複数のフラグのうちで該アクセスした処理装置に対応するフラグを、使用中を示す値に設定するよう機能するコントローラを含むことを特徴とする請求項１記載のキャッシュシステム。
【請求項６】
各々が１次キャッシュを含む複数のマスタに共通に接続され、該複数のマスタと主記憶装置との間に介在するよう機能する共用２次キャッシュであって、
複数のエントリを格納する記憶素子と、
該複数のエントリの各々に対して設けられ該複数のマスタに一対一に対応する複数のフラグ
を含み、一のエントリの該複数のフラグは対応するマスタが該一のエントリを使用中であるか否かを示すことを特徴とする共用２次キャッシュ。
【請求項７】
該複数のエントリを１つずつ順次選択し、該選択したエントリに対応する該複数のフラグのうちの指定のフラグを参照することで、該指定のフラグに対応するマスタが使用中であるエントリを検索するよう機能するコントローラを更に含むことを特徴とする請求項６記載の共用２次キャッシュ。
【請求項８】
該複数のマスタのうちの１つからのアクセス要求に応じて該複数のエントリの１つを選択する第１の回路と、
該コントローラによるエントリ検索において該複数のエントリを１つずつ順次選択する第２の回路
を更に含み、該第１の回路と該第２の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項７記載の共用２次キャッシュ。
【請求項９】
該コントローラによるエントリ検索において該複数のエントリを１つずつ順次選択する第３の回路
を更に含み、該第２の回路と該第３の回路とは別個に設けられ独立に動作可能であることを特徴とする請求項８記載の共用２次キャッシュ。
【請求項１０】
該複数のマスタのうちの１つが該複数のエントリの１つをアクセスするとそれに応答して、該アクセスされたエントリの該複数のフラグのうちで該アクセスしたマスタに対応するフラグを、使用中を示す値に設定するよう機能するコントローラを含むことを特徴とする請求項６記載の共用２次キャッシュ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にキャッシュシステムに関し、詳しくはキャッシュメモリが階層化されたキャッシュシステム及びそのようなキャッシュシステムで用いられる共用２次キャッシュに関する。
【背景技術】
【０００２】
コンピュータシステムにおいては一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。主記憶に記憶される情報の一部をキャッシュにコピーしておくことで、この情報をアクセスする場合には主記憶からではなくキャッシュから読み出すことで、高速な情報の読み出しが可能となる。
【０００３】
キャシュは複数のキャッシュラインを含み、主記憶からキャシュへの情報のコピーはキャシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
【０００４】
メモリ空間上のあるアドレスに最初のアクセスが実行されると、そのアドレスの情報（データやプログラム）をキャシュ内の対応するキャッシュラインにコピーする。同一アドレスに対して次のアクセスを実行する場合にはキャシュから直接に情報を読み出す。一般に、アドレスの全ビットのうちで、所定数の下位ビットがキャッシュのインデックスとなり、それより上位に位置する残りのビットがキャッシュのタグとなる。
【０００５】
データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、キャッシュ中の対応するインデックスのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンが一致するか否かを判断する。一致しない場合にはキャッシュミスとなる。一致する場合には、当該インデックスに対応するキャッシュデータ（１キャッシュライン分の所定ビット数のデータ）がアクセスされる。
【０００６】
各キャッシュラインに対して１つだけタグを設けたキャッシュの構成を、ダイレクトマッピング方式と呼ぶ。各キャッシュラインに対してＮ個のタグを設けたキャッシュの構成をＮウェイセットアソシアティブと呼ぶ。ダイレクトマッピング方式は１ウェイセットアソシアティブとみなすことができる。
【０００７】
ライトスルー方式では、データをメモリに書き込む際に、キャッシュへの書き込みとともに主記憶にも書き込みを行う。この方式では、キャッシュの内容を置き換える必要が生じても、データの有効／無効を示す有効ビットを無効化するだけでよい。それに対してライトバック方式では、データをメモリに書き込む際に、キャッシュへの書き込みのみを行う。書き込んだデータはキャッシュメモリ上にしか存在しないので、キャッシュの内容を置き換える際には、キャッシュメモリの内容を主記憶にコピーする必要がある。
【０００８】
キャッシュミスが発生した場合に、主記憶にアクセスすることによるペナルティーを軽減するために、キャッシュメモリを多階層化したシステムが用いられる。例えば、１次キャッシュと主記憶との間に、主記憶よりは高速にアクセスできる２次キャッシュを設けることにより、１次キャッシュにおいてキャッシュミスが発生した場合に、主記憶にアクセスが必要になる頻度を低くして、キャッシュミス・ペナルティーを軽減することができる。以下の説明では２階層のキャッシュシステムを考え、処理装置（演算器）に近い方を１次キャッシュ、主記憶に近い方を２次キャッシュとする。一般的には、１次キャッシュは小容量・高速であり、２次キャッシュは大容量・低速である。
【０００９】
多階層キャッシュシステムの構成において、キャッシュ間のデータの包含関係としては、インクルーシブ・キャッシュ方式が最も単純な構成である。インクルーシブ・キャッシュ方式では、１次キャッシュの格納内容が全て常に２次キャッシュに格納されている。２次キャッシュの内容が１次キャッシュの内容を包含していることになる。最も単純な構成であり、キャッシュの動作を制御する論理を組み立て易いという利点がある。これ以外の方式としては、例えば、全てのキャッシュの格納内容が１次キャッシュ又は２次キャッシュの何れか一方にのみ格納されるイクスクルーシブ・キャッシュ方式がある。イクスクルーシブ・キャッシュ方式では、実効キャッシュ容量が総キャッシュ容量に等しく、メモリ使用効率が良いという利点がある。以下のキャッシュ動作等の説明では、特にことわりのない限り、インクルーシブ・キャッシュ方式を前提とする。
【００１０】
複数の処理装置（マスタ）が存在するシステムでは、複数のマスタの各々が専用の１次キャッシュを有し、２次キャッシュについては複数のマスタ間で共用する構成がしばしば用いられる。この構成においては、例えば１次キャッシュは各マスタに内蔵する形で実装され、複数のマスタが１つの共用２次キャッシュに接続される。複数のマスタは、この共用２次キャッシュを介して主記憶装置に結合される。
【００１１】
このように２次キャッシュを共用する構成は、２次キャッシュをマスタ毎に専用に設ける構成と比較して、２次キャッシュの記憶容量を有効に活用することができるという利点がある。一方で、複数のマスタで２次キャッシュを共用するために、１次キャッシュ及び２次キャッシュの制御動作が複雑になるという問題がある。
【００１２】
２次キャッシュを共用するシステムでは、各マスタのＩＤ等を２次キャッシュに設けることなく、２次キャッシュの各エントリに対して当該エントリを使用するマスタを特定せずに制御する方式がある。この方式では、共用２次キャッシュのあるエントリを無効化する場合、全てのマスタの１次キャッシュの対応するエントリを無効化する必要が生じる。このように共用２次キャッシュの無効化動作が全てのマスタに影響を及ぼすので、システムの処理性能が低下してしまうという問題がある。
【００１３】
上記問題を解決する構成として、各マスタ毎の１次キャッシュのタグのコピーを、共用２次キャッシュ内に設ける構成がある。共用２次キャッシュのあるエントリを無効化する場合、当該エントリのタグを上記１次キャッシュのタグのコピー内で検索し、当該エントリに対応するエントリを有する１次キャッシュを特定する。こうして特定された１次キャッシュに対してのみ、無効化処理を実行すればよく、効率的な処理を実現することができる。しかしながらこの構成の場合、全てのマスタの１次キャッシュのタグのコピーを共用２次キャッシュ内に設ける必要があり、回路規模が増大すると共に、タグのコピーの検索のために制御が複雑になるという問題がある。
【００１４】
なお例えば特許文献１には、ジョブＩＤを登録してジョブ終了後にジョブＩＤを指定してエントリを無効化する構成が開示されている。
【特許文献１】特開平１１−２５９３６２号公報
【特許文献２】特開平８−３０５６３３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
以上を鑑みて、本発明は、システムの性能低下及び回路規模の増大を最小限に抑えることが可能な共用２次キャッシュ及びキャッシュシステムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明によるキャッシュシステムは、主記憶装置にアクセスするよう機能する複数の処理装置と、該複数の処理装置にそれぞれ結合され該処理装置から該主記憶装置よりも高速にアクセス可能な複数の１次キャッシュと、該複数の１次キャッシュを介して該複数の処理装置に結合され該複数の処理装置から該主記憶装置よりも高速にアクセス可能な１つの共用２次キャッシュを含み、該共用２次キャッシュは、複数のエントリを格納する記憶素子と、該複数のエントリの各々に対して設けられ該複数の処理装置に一対一に対応する複数のフラグを含み、一のエントリの該複数のフラグは対応する処理装置が該一のエントリを使用中であるか否かを示すことを特徴とする。
【００１７】
また本発明による共用２次キャッシュは、各々が１次キャッシュを含む複数のマスタに共通に接続され、該複数のマスタと主記憶装置との間に介在するよう機能する共用２次キャッシュであって、複数のエントリを格納する記憶素子と、該複数のエントリの各々に対して設けられ該複数のマスタに一対一に対応する複数のフラグを含み、一のエントリの該複数のフラグは対応するマスタが該一のエントリを使用中であるか否かを示すことを特徴とする。
【発明の効果】
【００１８】
本発明の少なくとも１つの実施例によれば、共用２次キャッシュの各エントリ毎に識別用のフラグを設けることにより、あるエントリが使用されているか否かを各処理装置（マスタ）毎に示すことができる。従って、マスタが特定されている場合には、そのマスタが使用しているエントリを容易に特定することができるとともに、エントリが指定されている場合には、そのエントリを使用しているマスタを容易に特定することができる。この際、エントリ毎に設けられたフラグは、各マスタに対して１ビットの情報を格納すればよい。従って、例えば各マスタ毎のタグのコピーを共用２次キャッシュに保持するような構成と比較して、回路規模の増大を抑制することができる。
【００１９】
上記構成においては、エントリを順次選択しながらフラグをチェックすることで、共用２次キャッシュにおいて特定のマスタが使用中のエントリを検索することができる。このようにして検索されたエントリを共用２次キャッシュにおいて無効化することで、特定のマスタについてのエントリ無効化処理を容易に且つ高速に実現することができる。また共用２次キャッシュのあるエントリを無効化した場合に、対応するフラグをチェックすることで、そのエントリを使用中のマスタを高速且つ容易に特定することができる。このようにして特定されたマスタにのみ無効化処理要求を発行することで、共用２次キャッシュのエントリ無効化処理に無関係なマスタに影響を与えることなく、必要なマスタにおいてのみ無効化処理を実行することができる。
【発明を実施するための最良の形態】
【００２０】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００２１】
図１は、本発明によるキャッシュシステムの実施例の構成を示す図である。図１のキャッシュシステムは、複数（ｎ個）のマスタ１−１乃至１−ｎ、共用２次キャッシュ２、主記憶装置３、ＤＭＡ４、及びバス５を含む。マスタ１−１乃至１−ｎの各々は、主記憶装置３のメモリ空間にアクセスする演算器等の処理装置１ａと、共用２次キャッシュ２と処理装置１ａとの間に設けられる１次キャッシュ１ｂとを含む。
【００２２】
複数のマスタ１−１乃至１−ｎは共用２次キャッシュ２を共用し、共用２次キャッシュ２を介して主記憶装置３に結合される。ＤＭＡ４は、説明の便宜上図示されるが、本発明によるキャッシュシステムに必須のものではない。ＤＭＡ４、共用２次キャッシュ２、主記憶装置３は、バス５を介して互いに接続される。
【００２３】
以下において、一例として、マスタ１−１の処理装置１ａがメモリ空間上のあるアドレスにアクセスを実行する場合の動作を説明する。
【００２４】
まずマスタ１−１の処理装置１ａが、メモリ空間に対する読み出し・書き込み動作を実行するために、マスタ１−１の１次キャッシュ１ｂにアクセス先のアドレスを送出すると、マスタ１−１の１次キャッシュ１ｂに当該アドレスのデータが格納されているか否かが判断される。これは１次キャッシュ１ｂのタグレジスタのタグ情報に基づいて判断される。１次キャッシュ１ｂに当該アドレスのデータが格納されていれば、読み出し動作の場合には、そのデータが１次キャッシュ１ｂのデータレジスタから処理装置１ａに供給される。書き込み動作の場合には、処理装置１ａから供給される書き込みデータで、１次キャッシュ１ｂのヒットしたエントリのデータを書き換える。
【００２５】
１次キャッシュ１ｂに当該アドレスのデータが格納されていない場合には、共用２次キャッシュ２に当該アドレスのデータが格納されているか否かが判断される。これは共用２次キャッシュ２のタグレジスタのタグ情報に基づいて判断される。共用２次キャッシュ２に当該アドレスのデータが格納されていれば、読み出し動作の場合には、そのデータが共用２次キャッシュ２のデータレジスタからマスタ１−１に供給される。当該データは、マスタ１−１の１次キャッシュ１ｂに登録される。即ち、データが１次キャッシュ１ｂのデータレジスタに格納されるとともに、対応するタグが１次キャッシュ１ｂのタグレジスタに格納され、更に対応有効ビットが有効にされる。書き込み動作の場合には、処理装置１ａから供給される書き込みデータで、共用２次キャッシュ２のヒットしたエントリのデータを書き換える。
【００２６】
１次キャッシュ１ｂにも共用２次キャッシュ２にも当該アドレスのデータが格納されていない場合には、そのアドレスに格納されているデータを主記憶装置３からバス５を介して読み出し、キャシュ内の対応するキャッシュラインにコピーする。即ち、主記憶装置３から読み出したデータを共用２次キャッシュ２及びマスタ１−１の１次キャッシュ１ｂの両方に登録する。読み出し動作の場合、処理装置１ａは、供給されたデータを取り込む。書き込み動作の場合、処理装置１ａは、キャッシュにコピーされたデータを書き換える。
【００２７】
データ書き込みの場合、ライトスルー方式では、データを書き込む際に、１次キャッシュ１ｂ及び／又は共用２次キャッシュ２への書き込みとともに主記憶装置３にも書き込みを行う。この方式では、キャッシュの内容を置き換える必要が生じても、データの有効／無効を示す有効ビットを無効化するだけでよい。それに対してライトバック方式では、データを書き込む際に、１次キャッシュ１ｂ及び／又は共用２次キャッシュ２への書き込みのみを行う。書き込んだデータはキャッシュメモリ上にしか存在しないので、キャッシュの内容を置き換える際には、キャッシュメモリの内容を主記憶装置３にコピーする必要がある。この場合、キャッシュの内容と主記憶装置１１の内容とが一致しているか否かを示すために、タグレジスタ部分２１に設定されるダーティービットと呼ばれる１ビットの情報が利用される。
【００２８】
本発明では、１次キャッシュの格納内容が全て２次キャッシュに包含されるインクルーシブ・キャッシュ方式を前提とする。データ書き込み方式としては、ライトスルー方式或いはライトバック方式の何れであっても構わない。以下の説明では、便宜上、ライトスルー方式を例にとって説明する。
【００２９】
図２は、本発明による共用２次キャッシュ２の実施例の構成の一例を示す図である。図２の共用２次キャッシュ２は、調停回路１０、コントローラ１１、ラインアドレスバッファ１２、タグレジスタ１３、セレクタ１４、判定ユニット１５、ラインアドレスバッファ１６、データレジスタ１７、セレクタ１８、及びゲート１９を含む。タグレジスタ１３には、有効ビット２１、マスタ識別フラグ２２、及びタグ２３が格納される。マスタ識別フラグ２２は、図示の都合上２つだけ示されるが、実際には共用２次キャッシュ２を共用するマスタの数（図１の例ではｎ個）に等しい数だけ設けられる。
【００３０】
調停回路１０は、複数のマスタ１−１乃至１−ｎから共用２次キャッシュ２に対するアクセス要求を受け取った場合に、優先度の高いマスタを選択するために設けられる。調停回路１０は、マスタ１−１乃至１−ｎのうちの１つを選択すると、選択されたマスタからの要求に伴うアドレスを出力する。このアクセス先を示すアドレスのうち、インデックス部分がラインアドレスバッファ１２に格納される。セレクタ１４は、ラインアドレスバッファ１２の格納値に応じて、タグレジスタ１３内の当該インデックスに対応する内容を選択して出力する。セレクタ１４から出力されたタグと、調停回路１０から供給されたアドレス中のタグ部分のビットパターンが一致するか否かを、判定ユニット１５で判断する。比較結果が一致を示し、且つタグレジスタ１３の当該インデックスの有効ビット２１が有効値“１”であれば、判定ユニット１５の出力がアサートされる。
【００３１】
また調停回路１０から出力されるアクセス先を示すアドレスのうち、インデックス部分がラインアドレスバッファ１６に格納される。セレクタ１８は、ラインアドレスバッファ１６の格納値に応じて、データレジスタ１７内の当該インデックスに対応するデータを選択して出力する。セレクタ１８から出力されるデータは、判定ユニット１５の出力のアサート状態に応答してゲート１９が開くことにより、共用２次キャッシュからの読み出しデータとしてマスタに供給される。
【００３２】
共用２次キャッシュ２に所望のデータが存在しない場合、判定ユニット１５の出力はアサートされない。この場合、コントローラ１１は、調停回路１０から供給されるアドレスに応答して、主記憶装置３の当該アドレスをアクセスする。コントローラ１１は、主記憶装置３から読み出されたリードデータを取り込み、共用２次キャッシュ２へのエントリとして登録する。即ち、データをデータレジスタ１７に格納するとともに、対応するタグをタグレジスタ１３に格納し、更に対応有効ビットを有効にする。
【００３３】
コントローラ１１は、キャッシュ管理に関わる種々の制御動作を実行する。例えば、有効ビットの設定をしたり、タグの設定をしたり、有効ビットをチェックすることで利用可能なキャッシュラインを検索したり、例えばＬＲＵ（least  recently  used）アルゴリズム等に基づいて置換対象となるキャッシュラインを選択したり、データレジスタ１７へのデータ書き込み動作を制御したりする。
【００３４】
本発明による共用２次キャッシュ２は、従来の構成と比較して、マスタ識別フラグがタグレジスタ１３に設けられていることを特徴とする。図３は、タグレジスタ１３及びデータレジスタ１７の内容を詳細に示す図である。
【００３５】
図３に示すように、タグレジスタ１３は、有効ビット（Ｖ）２１、複数のマスタ識別フラグ（Ｍ１，・・・，Ｍｎ）２２、及びタグ２３（アドレスのタグ部分）を含む。有効ビット２１は、データの有効／無効を示す１ビットのデータである。マスタ識別フラグ２２は、図１に示される複数のマスタ１−１乃至１−ｎに一対一に対応して設けられる複数のフラグＭ１，・・・，Ｍｎである。各フラグは１ビットのデータであり、対応エントリのデータが対応するマスタにより使用されているか否かを示す。
【００３６】
例えば、あるデータエントリ（あるインデックス）のマスタ識別フラグＭ１が０である場合、このデータエントリはマスタ識別フラグＭ１に対応するマスタ１−１により使用されていないことを示す。逆に、あるデータエントリ（あるインデックス）のマスタ識別フラグＭ１が１である場合、このデータエントリはマスタ識別フラグＭ１に対応するマスタ１−１により使用されていることを示す。同様に、あるデータエントリのマスタ識別フラグＭｎが０である場合、このデータエントリはマスタ識別フラグＭｎに対応するマスタ１−ｎにより使用されていないことを示す。逆に、あるデータエントリのマスタ識別フラグＭｎが１である場合、このデータエントリはマスタ識別フラグＭｎに対応するマスタ１−ｎにより使用されていることを示す。
【００３７】
マスタ識別フラグ２２の設定は、マスタ１−１乃至１−ｎから共用２次キャッシュ２へのアクセス要求に応じて行なわれる。具体的には、あるマスタからアクセス要求が共用２次キャッシュ２へ発行されると、共用２次キャッシュ２はタグレジスタ１３を検索する。該当するエントリが登録されていた場合、共用２次キャッシュ２はこのエントリを要求元のマスタへ送出するとともに、コントローラ１１が当該エントリの要求元マスタに対応するマスタ識別フラグ２２をセットする。また共用２次キャッシュ２に該当するエントリが登録されていなかった場合には、共用２次キャッシュ２からの読み出し要求に応じて主記憶装置３から読み出されたデータを共用２次キャッシュ２にエントリとして登録するとともに要求元マスタに転送し、更にコントローラ１１が当該エントリの要求元マスタに対応するマスタ識別フラグ２２をセットする。
【００３８】
このように本発明では、共用２次キャッシュ２のタグレジスタ１３の各エントリ毎にマスタ識別フラグ２２を設けることにより、あるエントリが使用されているか否かを各マスタ１−１乃至１−ｎ毎に示すことができる。従って、マスタが特定されている場合には、そのマスタが使用しているエントリを容易に特定することができるとともに、エントリが指定されている場合には、そのエントリを使用しているマスタを容易に特定することができる。
【００３９】
この際、エントリ毎に設けられたマスタ識別フラグ２２は、各マスタに対して１ビットの情報を格納すればよい。従って、例えば各マスタ毎のタグのコピーを共用２次キャッシュに保持するような構成と比較して、回路規模の増大を抑制することができる。
【００４０】
なお判別対象となるエントリの指定及びそのエントリのマスタ識別フラグ２２の値の判別は、コントローラ１１及び判定ユニット１５により実行されるものとしてよい。例えば図２において、コントローラ１１によりラインアドレスバッファ１２に対してインデックス（ラインアドレス）を指定することで、判別対象となるエントリを特定し、この特定されたエントリに対応するタグレジスタ１３の内容をセレクタ１４により選択出力する。またコントローラ１１から判定ユニット１５にマスタ識別フラグを指定する信号を供給することで、判別対象となるフラグを特定する。判定ユニット１５は、セレクタ１４から供給されるデータ中の特定されたフラグが１か０かを判別して、その結果をコントローラ１１に供給する。
【００４１】
なおラインアドレスバッファ１２及びセレクタ１４をそれぞれ２重に設けて、調停回路１０を介したマスタからのキャッシュアクセス用の経路と、マスタ識別フラグ２２の値の判別処理の経路とを別々とする構成としてよい。図４は、ラインアドレスバッファ及びセレクタを２重に設けた場合の構成の一例を示す図である。
【００４２】
図４において、ラインアドレスバッファ１２はラインアドレスバッファ１２ａ及び１２ｂから構成され、セレクタ１４はセレクタ１４ａ及び１４ｂから構成される。また判定ユニット１５も同様に、判定ユニット１５ａと判定ユニット１５ｂとに分割して示してある。
【００４３】
ラインアドレスバッファ１２ａ、セレクタ１４ａ、及び判定ユニット１５ａは、マスタからのアドレスに基づいて、当該アドレスのデータがエントリされているか否かを判断するための経路である。この経路を用いることで、マスタ１−１乃至１−ｎからメモリアクセスがあった場合に、前述の動作に従って共用２次キャッシュ２がヒットするか否かを判断する。
【００４４】
ラインアドレスバッファ１２ｂ、セレクタ１４ｂ、及び判定ユニット１５ｂは、コントローラ１１からのラインアドレス指定及びマスタ識別フラグ指定に基づいて、当該ラインアドレスのエントリが指定のマスタにより使用されているか否かを判断するための経路である。即ち、コントローラ１１によりラインアドレスバッファ１２ｂに対してインデックス（ラインアドレス）を指定することで、判別対象となるエントリを特定し、この特定されたエントリに対応するタグレジスタ１３の内容をセレクタ１４ｂにより選択出力する。またコントローラ１１から判定ユニット１５ｂにマスタ識別フラグを指定する信号を供給することで、判別対象となるフラグを特定する。判定ユニット１５ｂは、セレクタ１４ｂから供給されるデータ中の特定されたフラグが１か０かを判別して、その判別結果を出力する。
【００４５】
このように、マスタからのキャッシュアクセス用の経路とマスタ識別フラグの判別処理（検索処理）の経路とを別々に設ける構成とすれば、共用２次キャッシュ２のエントリを無効化する無効化処理と、共用２次キャッシュ２に対するマスタからのアクセス要求とを同時に実行することができる。これにより、あるマスタからの無効化処理要求を、他のマスタの処理に影響を与えることなく実行することが可能となる。
【００４６】
以下に、図１に示した本発明のキャッシュシステムの実施例において、エントリを無効化する場合の動作について説明する。具体的な例として、マスタ１−１乃至１−ｎのうちでマスタ１−１（以下Ｍ１と呼ぶ）が使用している領域をＤＭＡ４（図１）で書き換えた場合について説明する。
【００４７】
図５は、本発明によるキャッシュエントリ無効化処理の一例を示すフローチャートである。
【００４８】
ステップＳ１で、Ｍ１が何らかの処理を実行し、この処理において主記憶装置３の領域Ａがアクセスされ、領域Ａの内容が共用２次キャッシュ２及びＭ１の１次キャッシュ１ｂに格納される。ステップＳ２で、Ｍ１はＤＭＡ転送に必要な情報をＤＭＡＣに設定した後、ＤＭＡＣにデータ転送を開始させる。
【００４９】
ステップＳ３で、ＤＭＡＣ終了割込みが発生したか否かを判断する。ＤＭＡＣは転送が終了した時点で、起動元であるＭ１に対してＤＭＡ転送の終了割込みを発生させる。割込みが発生すると、処理はステップＳ４に進む。
【００５０】
ステップＳ４で、割込み通知を受けたＭ１が、割り込み処理ルーチンを起動させ、ＤＭＡ転送によって書き換えられた領域が、Ｍ１が使用している領域Ａであるか否かを判断する。領域Ａでない場合には、処理はステップＳ１に戻り、Ｍ１が実行中であった処理を再開する。
【００５１】
Ｍ１が使用する領域Ａが書き換えられたと判断した場合、ステップＳ５で、Ｍ１内部の１次キャッシュ１ｂをフラッシュする（１次キャッシュ１ｂの全内容を無効化する）。更にステップＳ６で、共用２次キャッシュ２においてＭ１が使用中のエントリを無効化するように、無効化要求をＭ１から共用２次キャッシュ２に発行する。これらの無効化処理は、領域Ａについて主記憶装置３上のデータと各キャッシュに格納されたデータとが不一致となるために必要となるものである。
【００５２】
ステップＳ７で、共用２次キャッシュ２をフラッシュする。即ち共用２次キャッシュ２においてＭ１が使用中のエントリを全て無効化する。この際、共用２次キャッシュのフラッシュ実行中はＭ１からの要求を保留する。
【００５３】
ステップＳ８で、共用２次キャッシュのフラッシュが終了したか否かを判断する。共用２次キャッシュのフラッシュが終了すると、処理はステップＳ１に戻り、Ｍ１が実行中であった処理を再開する。
【００５４】
図６は、共用２次キャッシュ２の無効化処理の第１の実施例を示すフローチャートである。このフローチャートの処理は図５のステップＳ７で実行されるものであり、ＤＭＡＣで書き換えた領域Ａが、Ｍ１だけが使用している領域であった場合の例である。
【００５５】
まず共用２次キャッシュ２は、Ｍ１が使用中のエントリを無効化する要求をM1から受けとる。これに応じてステップＳ１で、コントローラ１１がラインアドレスバッファ１２のラインアドレスを０に設定する。
【００５６】
ステップＳ２で、ラインアドレスバッファ１２のラインアドレス（インデックス）で指定されるエントリについて、タグレジスタ１３の内容をセレクタ１４で選択的に読み出す。この内容には有効ビット２１及びマスタ識別フラグ２２が含まれる。次にステップＳ３で、読み出した有効ビット２１の値Ｖが１（有効）であり、且つ読み出したマスタ識別フラグ２２のうちでＭ１のフラグが１（使用中）であるか否かを、判定ユニット１５により判定する。エントリが有効であり且つＭ１により使用中である場合以外の場合には、ステップＳ５に進む。エントリが有効であり且つＭ１により使用中である場合には、ステップＳ４で、コントローラ１１が当該ラインアドレスの有効ビット２１の値Ｖをゼロにして、当該エントリを無効化する。次にステップＳ５で、コントローラ１１がラインアドレスバッファ１２のラインアドレスの値を１だけインクリメントする。
【００５７】
ステップＳ６で、インクリメント後のラインアドレスの値が最終アドレスを超えたか否かを判断する。超えていない場合には、処理はステップＳ２に戻って、以降の処理を繰り返す。またインクリメント後のラインアドレスの値が最終アドレスを超えた場合には、処理を終了する。なお図６の処理を終了すると、共用２次キャッシュ２はＭ１にその旨を通知する。
【００５８】
このようにして、ラインアドレスを順次増加しながらマスタ識別フラグ２２をチェックすることで、共用２次キャッシュ２において特定のマスタが使用中のエントリを検索することができる。このようにして検索されたエントリを共用２次キャッシュ２において無効化することで、特定のマスタについてのエントリ無効化処理を容易に且つ高速に実現することができる。
【００５９】
図７は、共用２次キャッシュ２の無効化処理の第２の実施例を示すフローチャートである。これは、このフローチャートの処理は図５のステップＳ７で実行されるものであり、ＤＭＡＣで書き換えた領域Ａが、マスタ１−１乃至１−ｎのうちでＭ１以外のマスタ（以下Ｍ２と呼ぶ）もまた使用している領域であった場合の例である。
【００６０】
まず共用２次キャッシュ２は、Ｍ１が使用中のエントリを無効化する要求をM1から受けとる。これに応じてステップＳ１で、コントローラ１１がラインアドレスバッファ１２のラインアドレスを０に設定する。
【００６１】
ステップＳ２で、ラインアドレスバッファ１２のラインアドレス（インデックス）で指定されるエントリについて、タグレジスタ１３の内容をセレクタ１４で選択的に読み出す。この内容には有効ビット２１及びマスタ識別フラグ２２が含まれる。次にステップＳ３で、読み出した有効ビット２１の値Ｖが１（有効）であり、且つ読み出したマスタ識別フラグ２２のうちでＭ１のフラグが１（使用中）であるか否かを、判定ユニット１５により判定する。エントリが有効であり且つＭ１により使用中である場合以外の場合には、ステップＳ５に進む。エントリが有効であり且つＭ１により使用中である場合には、ステップＳ４で、コントローラ１１が当該ラインアドレスの有効ビット２１の値Ｖをゼロにして、当該エントリを無効化する。
【００６２】
次にステップＳ５で、読み出したマスタ識別フラグ２２のうちで、Ｍ１以外のＭ２乃至Ｍｎのフラグの何れかが１であるか否かを判断する。この判断は、判定ユニット１５（判定ユニット１５ｂ）が実行するように構成してよい。何れも１でない場合には、処理はステップＳ７に進む。何れかが１の場合には、処理はステップＳ６に進む。
【００６３】
ステップＳ６で、ステップＳ５のチェックによりフラグが１であると判明したマスタに対して、コントローラ１１が、１次キャッシュ１ｂの対応するエントリを無効化するように無効化要求を発行する。これにより、無効化要求が発行されたマスタ（この例の場合はＭ２）において、共用２次キャッシュ２のラインアドレスバッファ１２に格納されている現在のラインアドレス（インデックス）に対応したラインアドレスに位置する１次キャッシュ１ｂのエントリが無効化される。
【００６４】
ステップＳ７で、コントローラ１１がラインアドレスバッファ１２のラインアドレスの値を１だけインクリメントする。ステップＳ８で、インクリメント後のラインアドレスの値が最終アドレスを超えたか否かを判断する。超えていない場合には、処理はステップＳ２に戻って、以降の処理を繰り返す。またインクリメント後のラインアドレスの値が最終アドレスを超えた場合には、処理を終了する。なお図７の処理を終了すると、共用２次キャッシュ２はＭ１にその旨を通知する。
【００６５】
このようにして、共用２次キャッシュ２のあるエントリを無効化した場合に、対応するマスタ識別フラグ２２をチェックすることで、そのエントリを使用中のマスタを高速且つ容易に特定することができる。このようにして特定されたマスタにのみ無効化処理要求を発行することで、共用２次キャッシュ２のエントリ無効化処理に無関係なマスタに影響を与えることなく、必要なマスタにおいてのみ無効化処理を実行することができる。
【００６６】
以上説明した例では、共用２次キャッシュ２に対する無効化要求は１つのマスタＭ１からのみ送られてくる場合について説明した。しかし実際には、マスタ１−１乃至１−ｎのうちの複数のマスタが同時に無効化処理を共用２次キャッシュ２に要求してくる場合が考えられる。このような場合を考えると、マスタ識別フラグの判別処理（検索処理）の経路を複数用意して、複数のマスタからの無効化処理要求を同時に処理できることが好ましい。
【００６７】
図８は、マスタ識別フラグの判別処理用にラインアドレスバッファ及びセレクタを２重に設けた場合の構成の一例を示す図である。
【００６８】
図８において、ラインアドレスバッファ１２はラインアドレスバッファ１２ｂ及び１２ｃを含む。これらのラインアドレスバッファ１２ｂ及び１２ｃは、ラインアドレスバッファ１２ａ（図４参照）とは別に設けられる。またセレクタ１４はセレクタ１４ｂ及び１４ｃを含む。これらのセレクタ１４ｂ及び１４ｃは、セレクタ１４ａ（図４参照）とは別に設けられる。また判定ユニット１５も同様に、判定ユニット１５ｂと判定ユニット１５ｃとに分割して示してある。
【００６９】
ラインアドレスバッファ１２ｂ、セレクタ１４ｂ、及び判定ユニット１５ｂは、コントローラ１１からのラインアドレス指定及びマスタ識別フラグ指定に基づいて、当該ラインアドレスのエントリが指定のマスタにより使用されているか否かを判断するための第１の経路である。コントローラ１１によりラインアドレスバッファ１２ｂに対してインデックス（ラインアドレス）を指定することで、判別対象となるエントリを特定し、この特定されたエントリに対応するタグレジスタ１３の内容をセレクタ１４ｂにより選択出力する。またコントローラ１１から判定ユニット１５ｂにマスタ識別フラグを指定する信号を供給することで、判別対象となるフラグを特定する。判定ユニット１５ｂは、セレクタ１４ｂから供給されるデータ中の特定されたフラグが１か０かを判別して、その判別結果を出力する。
【００７０】
ラインアドレスバッファ１２ｃ、セレクタ１４ｃ、及び判定ユニット１５ｃもまた同様に、コントローラ１１からのラインアドレス指定及びマスタ識別フラグ指定に基づいて、当該ラインアドレスのエントリが指定のマスタにより使用されているか否かを判断するための第２の経路である。
【００７１】
このようにマスタ識別フラグの判別処理（検索処理）の経路を多重に設ける構成とすれば、第１のマスタから要求される共用２次キャッシュ２のエントリを無効化する第１の無効化処理と、第２のマスタから要求される共用２次キャッシュ２のエントリを無効化する第２の無効化処理とを、同時に実行することができる。これにより、マスタからの無効化処理要求を、効率的に処理することが可能となる。
【００７２】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００７３】
【図１】本発明によるキャッシュシステムの実施例の構成を示す図である。
【図２】本発明による共用２次キャッシュの実施例の構成の一例を示す図である。
【図３】タグレジスタ及びデータレジスタの内容を詳細に示す図である。
【図４】ラインアドレスバッファ及びセレクタを２重に設けた場合の構成の一例を示す図である。
【図５】本発明によるキャッシュエントリ無効化処理の一例を示すフローチャートである。
【図６】共用２次キャッシュの無効化処理の第１の実施例を示すフローチャートである。
【図７】共用２次キャッシュの無効化処理の第２の実施例を示すフローチャートである。
【図８】マスタ識別フラグの判別処理用にラインアドレスバッファ及びセレクタを２重に設けた場合の構成の一例を示す図である。
【符号の説明】
【００７４】
１−１乃至１−ｎ  マスタ
２  共用２次キャッシュ
３  主記憶装置
４  ＤＭＡ
５  バス
１０  調停回路
１１  コントローラ
１２  ラインアドレスバッファ
１３  タグレジスタ
１４  セレクタ
１５  判定ユニット
１６  ラインアドレスバッファ
１７  データレジスタ
１８  セレクタ
１９  ゲート
【図１】
2007156821.tif 000003
【図２】
2007156821.tif 000004
【図３】
2007156821.tif 000005
【図４】
2007156821.tif 000006
【図５】
2007156821.tif 000007
【図６】
2007156821.tif 000008
【図７】
2007156821.tif 000009
【図８】
2007156821.tif 000010