(57)【特許請求の範囲】
【請求項１】
主記憶装置にアクセスするよう機能する処理装置と、
前記処理装置に結合され前記処理装置から前記主記憶装置よりも高速にアクセス可能なキャッシュメモリ
を含み、あるアドレスに書き込みデータをストアするストア命令を実行する場合に、前記アドレスへのアクセスによるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーした後、前記キャッシュメモリ上の前記コピーされたデータを前記書き込みデータで書き替える第１の動作モードと、前記アドレスへのアクセスによるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーすることなく、前記キャッシュメモリ上の前記アロケートされた領域に前記書き込みデータをストアする第２の動作モードとを選択的に実行可能なように構成され、
前記第１の動作モードは前記第１の動作モードを指定して実行する第１の命令により実行され、前記第２の動作モードは前記第２の動作モードを指定して実行する第２の命令により実行されることを特徴とするキャッシュメモリシステム。
【請求項２】
前記ストア命令に先行して前記第１の命令である第１のプリロード命令又は前記第２の命令である第２のプリロード命令が発行されると、前記第１の動作モードでは前記第１のプリロード命令によるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーし、前記第２の動作モードでは前記第２のプリロード命令によるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーしないことを特徴とする請求項１記載のキャッシュメモリシステム。
【請求項３】
前記第１の命令である第１のストア命令又は前記第２の命令である第２のストア命令が発行されると、前記第１の動作モードでは前記第１のストア命令によるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーし、前記キャッシュメモリ上の前記コピーされたデータを前記書き込みデータで書き替え、前記第２の動作モードでは前記第２のストア命令によるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーすることなく、前記キャッシュメモリ上の前記アロケートされた領域に前記書き込みデータをストアすることを特徴とする請求項１記載のキャッシュメモリシステム。
【請求項４】
前記第１の動作モードと前記第２の動作モードとにおいて、前記キャッシュメモリに前記アドレスの領域をアロケートする際に、前記領域に既に存在する別のアドレスのデータを前記キャッシュメモリから前記主記憶装置に転送することを特徴とする請求項１記載のキャッシュメモリシステム。
【請求項５】
主記憶装置にアクセスするよう機能する処理装置と、
前記処理装置に結合され前記処理装置から前記主記憶装置よりも高速にアクセス可能なキャッシュメモリとを含むシステムにおけるキャッシュメモリの制御方法は、
あるアドレスに書き込みデータをストアするストア命令を実行する場合に、
前記アドレスへのアクセスによるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートし、
前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーした後、前記キャッシュメモリ上の前記コピーされたデータを前記書き込みデータで書き替える第１の動作モードと、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーすることなく、前記キャッシュメモリ上の前記アロケートされた領域に前記書き込みデータをストアする第２の動作モードとを選択的に実行する
各段階を含み、
前記第１の動作モードは前記第１の動作モードを指定して実行する第１の命令により実行され、前記第２の動作モードは前記第２の動作モードを指定して実行する第２の命令により実行される
ことを特徴とするキャッシュメモリの制御方法。
【請求項６】
前記アドレスの領域をアロケートする際に前記領域に既に存在する別のアドレスのデータを前記キャッシュメモリから前記主記憶装置に転送する段階
を更に含み、
前記主記憶装置に転送する段階と前記アドレスの領域をアロケートする段階とは、前記ストア命令に先行するプリロード命令により実行される
ことを特徴とする請求項５記載のキャッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリシステムに関し、詳しくはキャッシュメモリシステムに関する。
【背景技術】
【０００２】
コンピュータシステムにおいては一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。主記憶に記憶される情報の一部をキャッシュメモリにコピーしておくことで、この情報をアクセスする場合には主記憶からではなくキャッシュメモリから読み出すことで、高速な情報の読み出しが可能となる。
【０００３】
キャシュメモリは複数のキャッシュラインを含み、主記憶からキャッシュメモリへの情報のコピーはキャッシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュメモリの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
【０００４】
一般に、アドレスの全ビットのうちで、所定数の下位ビットがキャッシュメモリのインデックスとなり、それより上位に位置する残りのビットがキャッシュメモリのタグとなる。データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、キャッシュメモリ中の対応するインデックスのタグを読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンとが一致するか否かを判断する。一致しない場合にはキャッシュミスとなる。一致する場合には、キャッシュヒットとなり、当該インデックスに対応するキャッシュデータ（１キャッシュライン分の所定ビット数のデータ）がアクセスされる。
【０００５】
ライトスルー方式では、データをメモリに書き込む際に、キャッシュメモリへの書き込みとともに主記憶にも書き込みを行う。この方式では、キャッシュメモリの内容を置き換える必要が生じても、データの有効／無効を示す有効ビットを無効化するだけでよい。それに対してライトバック方式では、データをメモリに書き込む際に、キャッシュメモリへの書き込みのみを行う。書き込んだデータはキャッシュメモリ上にしか存在しないので、キャッシュメモリの内容を置き換える際には、キャッシュメモリの内容を主記憶にコピーする必要がある。またミスヒットしたときの書き込み動作として、ライトアロケート方式とノーライトアロケート方式とがある。ライトアロケート方式では、アクセス対象のデータを主記憶からキャッシュメモリにコピーして、キャッシュメモリ上のデータを書き込み動作により更新する。ノーライトアロケート方式では、主記憶のデータをキャッシュメモリにコピーすることなく、主記憶上のアクセス対象のデータのみを書き込み動作により更新する。
【０００６】
ライトアロケート方式のストア命令（書き込み命令）では、キャッシュミスが発生したときに、主記憶のデータのコピーをキャッシュに用意する動作を実行するので、プロセッサの命令実行に少なからずペナルティが生じることになる。このような主記憶からキャッシュメモリへの１キャッシュライン分のデータ転送のペナルティを軽減するために、プリロード（プリフェッチ）命令を用いることができる。このプリロード命令は、主記憶のデータのコピーをキャッシュメモリに用意する動作にかかる時間分だけ、キャッシュミスするストア命令よりも早いタイミングで発行する。これにより、プリロード命令後の他の命令を実行している間に、主記憶のデータのコピーをキャッシュメモリに用意することができる。従って、キャッシュミス時のストア命令のペナルティを隠蔽することができる。
【０００７】
このようにしてキャッシュミス時の１キャッシュライン分のデータ転送（ＭｏｖｅＩｎ動作）のペナルティをプリロード命令の事前発行によって隠蔽することができるが、そもそも主記憶からキャッシュメモリへの１キャッシュライン分のデータ転送そのものが無駄である場合がある。即ち、ストア命令に応答してキャッシュメモリにコピーされる１キャッシュライン分のデータが当該ストア命令により全て書き替えられることが予め分かっている場合、このデータの主記憶からキャッシュメモリへの転送そのものが無駄である。このデータ転送に伴うメモリアクセスは、処理性能を劣化させ且つ消費電力を増大させる無駄な要因でしかない。
【０００８】
ライトアロケート方式のストア命令における、上記の本質的に無駄なデータ転送をハードウェアによって抑止する技術がある（特許文献１）。この技術は、キャッシュエントリの全データを連続ストアする場合を対象とするものであり、連続ストア命令発行を検出するための多くの命令キューやライトバッファを専用に設ける必要がある。また、ストライドアクセスのような複数のキャッシュエントリを対象に順にストア命令を発行する場合等、不連続ストア動作となる場合については、無駄なデータ転送を抑止することに著しい困難が生じる。
【特許文献１】特開平７−２１０４６３号公報
【特許文献２】特開平８−２１２１３３号公報
【特許文献３】特開平７−１５２６５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
以上を鑑みて本発明は、ライトアロケート方式のストア命令における無駄なデータ転送をなくしたキャッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
キャッシュメモリシステムは、主記憶装置にアクセスするよう機能する処理装置と、前記処理装置に結合され前記処理装置から前記主記憶装置よりも高速にアクセス可能なキャッシュメモリを含み、あるアドレスに書き込みデータをストアするストア命令を実行する場合に、前記アドレスへのアクセスによるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーした後、前記キャッシュメモリ上の前記コピーされたデータを前記書き込みデータで書き替える第１の動作モードと、前記アドレスへのアクセスによるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートするとともに、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーすることなく、前記キャッシュメモリ上の前記アロケートされた領域に前記書き込みデータをストアする第２の動作モードとを選択的に実行可能なように構成され、前記第１の動作モードは前記第１の動作モードを指定して実行する第１の命令により実行され、前記第２の動作モードは前記第２の動作モードを指定して実行する第２の命令により実行されることを特徴とする。
【００１１】
主記憶装置にアクセスするよう機能する処理装置と、前記処理装置に結合され前記処理装置から前記主記憶装置よりも高速にアクセス可能なキャッシュメモリとを含むシステムにおけるキャッシュメモリの制御方法は、あるアドレスに書き込みデータをストアするストア命令を実行する場合に、前記アドレスへのアクセスによるキャッシュミスの発生に応答して前記キャッシュメモリに前記アドレスの領域をアロケートし、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーした後、前記キャッシュメモリ上の前記コピーされたデータを前記書き込みデータで書き替える第１の動作モードと、前記主記憶装置の前記アドレスのデータを前記キャッシュメモリ上の前記アロケートされた領域にコピーすることなく、前記キャッシュメモリ上の前記アロケートされた領域に前記書き込みデータをストアする第２の動作モードとを選択的に実行する各段階を含み、前記第１の動作モードは前記第１の動作モードを指定して実行する第１の命令により実行され、前記第２の動作モードは前記第２の動作モードを指定して実行する第２の命令により実行されることを特徴とする。
【発明の効果】
【００１２】
本発明の少なくとも１つの実施例によれば、キャッシュミスに応答してＭｏｖｅＩｎ動作を実行する通常の第１の動作モードと、キャッシュミスに応答してＭｏｖｅＩｎ動作を実行しない第２の動作モードとが設けられている。従って、ＭｏｖｅＩｎ動作によるデータ転送が無駄になることが分かっている場合には、キャッシュミスの発生に応答してキャッシュメモリに書き込みアドレスの領域をアロケートするだけで、主記憶装置からキャッシュメモリにＭｏｖｅＩｎ動作を実行することなく、キャッシュメモリ上のアロケートされた領域に書き込みデータをストアすることができる。これにより、ライトアロケート方式のストア命令における無駄なデータ転送をなくして、処理性能を改善して且つ消費電力を削減することができる。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１４】
ストア命令に応答してキャッシュメモリにコピーされる１キャッシュライン分のデータが当該ストア命令により全て書き替えられることが予め分かっている場合、このデータの主記憶からキャッシュメモリへの転送そのものが無駄である。このような無駄なデータ転送が発生するデータ領域は、多くの場合、プログラムの作成時点で既に静的に決定している。従って、無駄なデータ転送を行うストア命令は例えばコンパイラ等のソフトウェアで認識可能であり、無駄なデータ転送を抑止する手段をソフトウェアにより提供することができる。
【００１５】
本発明の第１の実施例では、ライトアロケート方式のキャッシュメモリシステムにおいて、第１のストア命令と第２のストア命令との２種類のストア命令が用意される。無駄でないデータ転送を発生させるストア命令の実行には第１のストア命令を割り当て、無駄なデータ転送を発生させるストア命令の実行には第２のストア命令を割り当てる。
【００１６】
あるアドレスに書き込みデータをストアするストア命令を実行する場合に、第１のストア命令を実行することにより、当該アドレスへのアクセスによるキャッシュミスの発生に応答してキャッシュメモリに当該アドレスの領域をアロケートするとともに、主記憶装置の当該アドレスのデータをキャッシュメモリ上のアロケートされた領域にコピーした後、キャッシュメモリ上のコピーされたデータを書き込みデータで書き替える第１の動作モードを実行する。これにより、通常のライトアロケート方式のストア命令を実装する。
【００１７】
更に、あるアドレスに書き込みデータをストアするストア命令を実行する場合に、第２のストア命令を実行することにより、当該アドレスへのアクセスによるキャッシュミスの発生に応答してキャッシュメモリに当該アドレスの領域をアロケートするとともに、主記憶装置の当該アドレスのデータをキャッシュメモリ上のアロケートされた領域にコピーすることなく、キャッシュメモリ上のアロケートされた領域に書き込みデータをストアする第２の動作モードを実行する。これにより、通常のライトアロケート方式のストア命令とは異なり、主記憶装置からキャッシュメモリへの１キャッシュライン分のデータ転送（ＭｏｖｅＩｎ）動作をなくしたストア動作を実行することができる。
【００１８】
図１は、本発明の第１の実施例の動作を説明するための概念図である。主記憶装置１２にアクセスするよう機能するＣＰＵ等の処理装置と、処理装置から主記憶装置１２よりも高速にアクセス可能なキャッシュメモリ１１とを含むキャッシュメモリシステムにおいて、処理装置がプログラム（命令列）１０を実行する。プログラム１０は、命令１乃至命令ｎを含み、例えば２番目の命令がストア命令である。
【００１９】
まずストア命令が、ＭｏｖｅＩｎ動作を実行する第１のストア命令である場合について説明する。ＣＰＵ（処理装置）がストア命令をフェッチし、デコードし、ストア命令の実行を開始する。このストア命令の発行に応答して、書き込みデータ及び書き込みアドレスがキャッシュメモリ１１に送られる（Ｓ１）。このとき、対応するキャッシュエントリ１３のタグと書き込みアドレスとが一致せずにキャッシュミスしたとする。また、対応キャッシュラインにはダーティな状態（即ち主記憶装置１２にキャッシュデータの変化が反映されていない状態）の別のキャッシュラインデータが存在するとする。この場合、キャッシュエントリ１３への書き込みデータの書き込みは保留となり、書き込みデータはキャッシュメモリ１１内部のバッファに保持される。
【００２０】
その後、対象キャッシュエントリ１３のキャッシュラインデータを入れ替えるため、対象キャッシュエントリ１３に現在格納されているキャッシュラインデータを主記憶装置１２に書き込むライトバック動作を実行する（Ｓ２）。また、指定された書き込みアドレスを含む１キャッシュライン分のデータを主記憶装置１２からキャッシュメモリ１１の対象キャッシュエントリ１３にコピーするために、主記憶装置１２からキャッシュメモリ１１へのデータ転送（ＭｏｖｅＩｎ動作）が実行される（Ｓ３）。この際、キャッシュエントリ１３のタグを、指定された書き込みアドレスに対応するタグに書き替えて、キャッシュメモリ１１のキャッシュエントリ１３を書き込みアドレスの領域としてアロケートする。
【００２１】
最後に、キャッシュメモリ１１の内部バッファに保留されていた書き込みデータにより対象キャッシュエントリ１３のデータを更新する。これにより第１のストア命令の実行が完了する。
【００２２】
次にストア命令が、ＭｏｖｅＩｎ動作を実行しない第１のストア命令である場合について説明する。ストア命令の発行により、書き込みデータ及び書き込みアドレスがキャッシュメモリ１１に送られる動作（Ｓ１）は、第１のストア命令の場合と同様である。また対応キャッシュラインにはダーティな状態（即ち主記憶装置１２にキャッシュデータの変化が反映されていない状態）の別のキャッシュラインデータが存在するとする。この場合、対象キャッシュエントリ１３のキャッシュラインデータを入れ替えるため、対象キャッシュエントリ１３に現在格納されているキャッシュラインデータを主記憶装置１２に書き込むライトバック動作を実行する（Ｓ２）。第１のストア命令の場合と異なり、第２のストア命令の場合には、指定された書き込みアドレスを含む１キャッシュライン分のデータを主記憶装置１２からキャッシュメモリ１１の対象キャッシュエントリ１３に転送するＭｏｖｅＩｎ動作は実行しない。即ち、点線で示すＳ３のデータ転送は実行しない。但し、キャッシュエントリ１３のタグを、指定された書き込みアドレスに対応するタグに書き替えて、キャッシュメモリ１１のキャッシュエントリ１３を書き込みアドレスの領域としてアロケートする。
【００２３】
最後に、キャッシュメモリ１１の内部バッファに保留されていた書き込みデータにより対象キャッシュエントリ１３のデータを更新する。これにより第２のストア命令の実行が完了する。
【００２４】
図２は、本発明の第２の実施例の動作を説明するための概念図である。第２の実施例では、ライトアロケート方式のキャッシュメモリシステムにおいて、第１のプリロード命令と第２のプリロード命令との２種類のプリロード命令が用意される。データ転送が無駄にならないストア命令の場合には事前に第１のプリロード命令を実行し、データ転送が無駄になるストア命令の場合には事前に第２のプリロード命令を実行する。
【００２５】
ストア命令に先行して第１のプリロード命令が発行されると、プリロード命令によるキャッシュミスの発生に応答してキャッシュメモリにアクセス対象のアドレスの領域をアロケートするとともに、主記憶装置の当該アドレスのデータをキャッシュメモリ上のアロケートされた領域にコピーする。またストア命令に先行して第２のプリロード命令が発行されると、プリロード命令によるキャッシュミスの発生に応答してキャッシュメモリにアクセス対象のアドレスの領域をアロケートするとともに、主記憶装置の当該アドレスのデータをキャッシュメモリ上のアロケートされた領域にコピーしないでプリロード命令動作を終了する。
【００２６】
図２において、図１と同一の構成要素は同一の番号で参照し、その説明は省略する。プログラム１０Ｂは、命令１乃至命令ｎを含み、例えば１番目の命令がプリロード命令であり、ｎ番目の命令がストア命令である。
【００２７】
まずプリロード命令が、ＭｏｖｅＩｎ動作を実行する第１のプリロード命令である場合について説明する。ＣＰＵ（処理装置）がプリロード命令をフェッチし、デコードし、プリロード命令の実行を開始する。このプリロード命令の発行により、ロードアドレス（後続ストア命令の書き込みアドレス）がキャッシュメモリ１１に送られる（Ｓ１）。このとき、対応するキャッシュエントリ１３のタグとロードアドレスとが一致せずにキャッシュミスしたとする。また、対応キャッシュラインにはダーティな状態（即ち主記憶装置１２にキャッシュデータの変化が反映されていない状態）の別のキャッシュラインデータが存在するとする。
【００２８】
この場合、対象キャッシュエントリ１３のキャッシュラインデータを入れ替えるため、対象キャッシュエントリ１３に現在格納されているキャッシュラインデータを主記憶装置１２に書き込むライトバック動作を実行する（Ｓ２）。また、指定された書き込みアドレスを含む１キャッシュライン分のデータを主記憶装置１２からキャッシュメモリ１１の対象キャッシュエントリ１３にコピーするために、主記憶装置１２からキャッシュメモリ１１へのデータ転送（ＭｏｖｅＩｎ動作）が実行される（Ｓ３）。この際、キャッシュエントリ１３のタグを、指定された書き込みアドレスに対応するタグに書き替えて、キャッシュメモリ１１のキャッシュエントリ１３を書き込みアドレスの領域としてアロケートする。以上で第１のプリロード命令の実行が終了する。
【００２９】
最後に、ＣＰＵ（処理装置）がストア命令をフェッチし、デコードし、ストア命令の実行を開始する。このストア命令の発行により、書き込みデータ及び書き込みアドレスがキャッシュメモリ１１に送られる（Ｓ４）。書き込みアドレスにタグが一致するキャッシュエントリ１３が存在するのでキャッシュヒットし、この対応キャッシュエントリ１３に書き込みデータが格納される。これによりストア命令の実行が完了する。
【００３０】
次にプリロード命令が、ＭｏｖｅＩｎ動作を実行しない第２のプリロード命令である場合について説明する。プリロード命令の発行により、ロードアドレス（後続ストア命令の書き込みアドレス）がキャッシュメモリ１１に送られる動作（Ｓ１）については、第１のプリロード命令の場合と同一である。また対応キャッシュラインにはダーティな状態（即ち主記憶装置１２にキャッシュデータの変化が反映されていない状態）の別のキャッシュラインデータが存在するとする。この場合、対象キャッシュエントリ１３のキャッシュラインデータを入れ替えるため、対象キャッシュエントリ１３に現在格納されているキャッシュラインデータを主記憶装置１２に書き込むライトバック動作を実行する（Ｓ２）。第１のプリロード命令の場合と異なり、第２のプリロード命令の場合には、指定されたアドレスを含む１キャッシュライン分のデータを主記憶装置１２からキャッシュメモリ１１の対象キャッシュエントリ１３に転送するＭｏｖｅＩｎ動作は実行しない。即ち、点線で示すＳ３のデータ転送は実行しない。但し、キャッシュエントリ１３のタグを、指定されたアドレスに対応するタグに書き替えて、キャッシュメモリ１１のキャッシュエントリ１３を指定アドレスの領域としてアロケートする。以上で第２のプリロード命令の実行が終了する。
【００３１】
最後に、ＣＰＵ（処理装置）がストア命令をフェッチし、デコードし、ストア命令の実行を開始する。このストア命令の発行により、書き込みデータ及び書き込みアドレスがキャッシュメモリ１１に送られる（Ｓ４）。書き込みアドレスにタグが一致するキャッシュエントリ１３が存在するのでキャッシュヒットし、この対応キャッシュエントリ１３に書き込みデータが格納される。これによりストア命令の実行が完了する。
【００３２】
図３は、本発明の第３の実施例の動作を説明するための概念図である。図３において、図１と同一の構成要素は同一の番号で参照し、その説明は省略する。第３の実施例では、ライトアロケート方式のキャッシュメモリシステムにおいて、設定レジスタ１４を更に含み、書き込みアドレスに対応するキャッシュメモリ１１の領域（キャッシュエントリ１３）が設定レジスタ１４に有効値として設定されている場合には、プリロード命令又はストア命令においてＭｏｖｅＩｎ動作が実行される。また書き込みアドレスに対応するキャッシュメモリ１１の領域（キャッシュエントリ１３）が設定レジスタ１４に有効値として設定されていない場合には、プリロード命令又はストア命令においてＭｏｖｅＩｎ動作を実行しない。図３は、一例としてストア命令の場合を示すが、プリロード命令の場合も同様である。図３のプログラム１０Ｃは、命令１乃至命令ｎを含み、例えば１番目の命令がストア命令であり、ｎ番目の命令が解除命令である。
【００３３】
まずストア命令の実行時にＭｏｖｅＩｎ動作を実行する場合について説明する。最初に、ＣＰＵによる所定の命令の実行により、設定レジスタ１４を解除状態（無効状態）として、設定レジスタ１４の設定値が有効ではない状態にする（Ｓ１）。これは、設定レジスタ１４に有効／無効ビット等を設けておき、このビットに無効を示す値を設定することで実現できる。
【００３４】
その後ＣＰＵ（処理装置）がストア命令をフェッチし、デコードし、ストア命令の実行を開始する。このストア命令の発行に応答して、書き込みデータ及び書き込みアドレスがキャッシュメモリ１１に送られる（Ｓ２）。このとき、対応するキャッシュエントリ１３のタグと書き込みアドレスとが一致せずにキャッシュミスしたとする。また、対応キャッシュラインにはダーティな状態（即ち主記憶装置１２にキャッシュデータの変化が反映されていない状態）の別のキャッシュラインデータが存在するとする。この場合、キャッシュエントリ１３への書き込みデータの書き込みは保留となり、書き込みデータはキャッシュメモリ１１内部のバッファに保持される。
【００３５】
その後、対象キャッシュエントリ１３のキャッシュラインデータを入れ替えるため、対象キャッシュエントリ１３に現在格納されているキャッシュラインデータを主記憶装置１２に書き込むライトバック動作を実行する（Ｓ３）。また、指定された書き込みアドレスを含む１キャッシュライン分のデータを主記憶装置１２からキャッシュメモリ１１の対象キャッシュエントリ１３にコピーするために、主記憶装置１２からキャッシュメモリ１１へのデータ転送（ＭｏｖｅＩｎ動作）が実行される（Ｓ４）。この際、キャッシュエントリ１３のタグを、指定された書き込みアドレスに対応するタグに書き替えて、キャッシュメモリ１１のキャッシュエントリ１３を書き込みアドレスの領域としてアロケートする。
【００３６】
最後に、キャッシュメモリ１１の内部バッファに保留されていた書き込みデータにより対象キャッシュエントリ１３のデータを更新する。これによりストア命令の実行が完了する。
【００３７】
次にストア命令の実行時にＭｏｖｅＩｎ動作を実行しない場合について説明する。最初に、ＣＰＵによる所定の命令の実行により、設定レジスタ１４にキャッシュエントリ１３を示す値を設定し、更に、設定レジスタ１４の設定値が有効な状態にする（Ｓ１）。これは、設定レジスタ１４に有効／無効ビット等を設けておき、このビットに有効を示す値を設定することで実現できる。
【００３８】
ストア命令の発行により、書き込みデータ及び書き込みアドレスがキャッシュメモリ１１に送られる動作（Ｓ２）は、第１のストア命令の場合と同様である。また対応キャッシュラインにはダーティな状態（即ち主記憶装置１２にキャッシュデータの変化が反映されていない状態）の別のキャッシュラインデータが存在するとする。この場合、対象キャッシュエントリ１３のキャッシュラインデータを入れ替えるため、対象キャッシュエントリ１３に現在格納されているキャッシュラインデータを主記憶装置１２に書き込むライトバック動作を実行する（Ｓ３）。設定レジスタ１４がキャッシュエントリ１３を指し示す場合には、指定された書き込みアドレスを含む１キャッシュライン分のデータを主記憶装置１２からキャッシュメモリ１１の対象キャッシュエントリ１３に転送するＭｏｖｅＩｎ動作は実行しない。即ち、点線で示すＳ４のデータ転送は実行しない。但し、キャッシュエントリ１３のタグを、指定された書き込みアドレスに対応するタグに書き替えて、キャッシュメモリ１１のキャッシュエントリ１３を書き込みアドレスの領域としてアロケートする。
【００３９】
その後、キャッシュメモリ１１の内部バッファに保留されていた書き込みデータにより対象キャッシュエントリ１３のデータを更新する。これによりストア命令の実行が完了する。
【００４０】
最後に、データキャッシュ制御命令やレジスタ解除命令を発行することにより、キャッシュメモリ１１の設定レジスタ１４を解除状態（無効状態）として、設定レジスタ１４の設定値が有効ではない状態にする。これは、設定レジスタ１４に有効／無効ビット等を設けておき、このビットに無効を示す値を設定することで実現できる。これにより、キャッシュエントリ１３を通常のキャッシュ領域として使用することが可能となる。なおこのとき、キャッシュエントリ１３のキャッシュラインデータはダーティな状態（即ち主記憶装置１２にキャッシュデータの変化が反映されていない状態）であるので、このキャッシュラインデータを主記憶装置１２に書き込むライトバック動作を、設定レジスタ１４の解除動作と一緒に実行してよい（Ｓ６）。
【００４１】
図４は、本発明の実施例によるキャッシュメモリシステムの構成を示す図である。図４のキャッシュメモリシステムは、ＣＰＵ２０、主記憶装置２１、及びキャッシュメモリ２２を含む。メモリシステムは階層構造となっていてもよく、例えば主記憶装置２１とキャッシュメモリ２２との間に、主記憶装置２１の上位に位置する上位記憶階層のメモリ装置が設けられている構成であってもよい。同様に、ＣＰＵ２０とキャッシュメモリ２２との間に、キャッシュメモリ２２の上位に位置する上位記憶階層のメモリ装置が設けられている構成であってもよい。
【００４２】
キャッシュメモリ２２は、制御部３１、タグレジスタ３２、アドレス比較器３３、データキャッシュレジスタ３４、セレクタ３５、データバッファ３６、及びキャッシュ属性情報レジスタ３７を含む。タグレジスタ３２には、有効ビット、ダーティビット、及びタグが格納される。データバッファ３６には、各キャッシュエントリに対応する１キャッシュラインのデータが格納される。キャッシュメモリ２２の構成は、各キャッシュラインに対して１つだけタグを設けたダイレクトマッピング方式であってもよいし、各キャッシュラインに対してＮ個のタグを設けたＮウェイセットアソシアティブ方式であってもよい。Ｎウェイセットアソシアティブ方式の場合には、タグレジスタ３２及びデータキャッシュレジスタ３４が複数セット設けられることになる。
【００４３】
ＣＰＵ２０がメモリ空間にアクセスする命令を発行（実行開始）すると、ＣＰＵ２０からアクセス先を示すアドレスが出力される。このアクセス先を示すアドレスのうちのインデックス部分が、タグレジスタ３２に供給される。タグレジスタ３２は、当該インデックスに対応する内容（タグ）を選択して出力する。タグレジスタ３２から出力されたタグと、ＣＰＵ２０から供給されたアドレス中のタグ部分のビットパターンが一致するか否かを、アドレス比較器３３で判断する。比較結果が一致を示し且つタグレジスタ３２の当該インデックスの有効ビットが有効値“１”であれば、キャッシュヒットとなり、アドレス比較器３３からアドレス一致を示す信号が制御部３１に対してアサートされる。
【００４４】
またＣＰＵ２０から供給されたアクセス先を示すアドレスのうちのインデックス部分は、データキャッシュレジスタ３４にも供給される。データキャッシュレジスタ３４は、当該インデックスに対応するキャッシュラインのデータを選択して出力する。セレクタ３５は、Ｎウェイセットアソシアティブ方式の場合にアドレス比較器３３から供給される信号に基づいて、複数のキャッシュラインのデータのうちのアクセス対象の１つを選択して出力する。セレクタ３５から出力されるデータは、キャッシュメモリ２２からの読み出しデータとしてＣＰＵ２０に供給される。
【００４５】
キャッシュメモリ２２にアクセス対象のデータが存在しない場合、即ちキャッシュミスした場合、アドレス比較器３３はアドレス不一致を示す出力をアサートする。この場合の基本的な動作として、制御部３１は、主記憶装置２１の当該アドレスをアクセスし、主記憶装置２１から読み出したデータをキャッシュエントリとして登録する。即ち、主記憶装置２１から読み出したデータをデータキャッシュレジスタ３４に格納するとともに、対応するタグをタグレジスタ３２に格納し、更に対応有効ビットを有効にする。但し本願発明の実施例では、後述するように、キャッシュミスした場合であっても主記憶装置２１からキャッシュメモリ２２へのデータ転送（ＭｏｖｅＩｎ動作）を実行しない動作モードが設けられている。
【００４６】
制御部３１は、キャッシュ管理に関わる種々の制御動作を実行する。例えば、有効ビットの設定をしたり、タグの設定をしたり、有効ビットをチェックすることで利用可能なキャッシュラインを検索したり、例えばＬＲＵ（least recently used）アルゴリズム等に基づいて置換対象となるキャッシュラインを選択したり、データキャッシュレジスタ３４へのデータ書き込み動作を制御したりする。また制御部３１は更に、主記憶装置２１に対するデータ読み出し／書き込み動作を制御する。
【００４７】
図５は、図１に示す第１の実施例の動作を示すフローチャートである。図４と図５とを参照して、以下に第１の実施例の動作について説明する。
【００４８】
図５のステップＳ１で、ストア先のアドレスを指定してストア命令を発行する。これにより図４においてＣＰＵ２０からキャッシュメモリ２２に対してアドレスが供給される（Ａ１）。またＣＰＵ２０からキャッシュメモリ２２に対して書き込みデータが供給され、データバッファ３６に格納される。またこれと同時に、ＣＰＵ２０からキャッシュメモリ２２の制御部３１に対して、ＭｏｖｅＩｎ動作の実行／非実行を指定する信号が制御部３１に供給される（Ａ２）。具体的には、ＣＰＵ２０のデコーダ２５が実行対象の命令をデコードすることにより、実行対象の命令がＭｏｖｅＩｎ動作を伴う第１のストア命令であるのかＭｏｖｅＩｎ動作を伴わない第２のストア命令であるのかを判断できるので、この判断結果に基づいてＣＰＵ２０から制御部３１への指示がなされる。
【００４９】
次に図５のステップＳ２で、ストア先のアドレスがキャッシュメモリ２２にアロケート済みであるか否かを判断する。これは図４においてアドレス比較器３３がアクセス対象のアドレスのタグ部分と対応キャッシュエントリのタグとを比較し、比較結果に応じてアドレス一致を示す信号又はアドレス不一致を示す信号をアサートすることに相当する（Ａ３）。アロケート済みである場合、即ちタグが一致する場合、図５のステップＳ６において、対応キャッシュエントリに対してストア対象の書き込みデータを書き込む。即ち、図４において、ストア命令と共に供給された書き込みデータがデータバッファ３６を介してデータキャッシュレジスタ３４の対応キャッシュエントリに格納される（Ａ５）。
【００５０】
図５のステップＳ２の判断の結果がアロケート済みでない場合、即ちタグが一致しない場合、図５のステップＳ３において、対応キャッシュエントリにダーティなデータがあるか否かを判断する。これはタグレジスタ３２の対応キャッシュエントリのダーティビットが有効設定／無効設定の何れであるかを判断することにより行われる。ダーティなデータが有る場合、図５のステップＳ４において、対応キャッシュエントリのデータを主記憶にライトバックする。即ち図４において、データキャッシュレジスタ３４の対応キャッシュエントリのデータを主記憶装置２１の対応アドレスに書き込みする（Ａ４）。ダーティなデータが無い場合、ステップＳ４はスキップされる。
【００５１】
次に図５のステップＳ５で、対応キャッシュエントリを書き込みアドレスの領域としてアロケートする。図５に示す例では、ＭｏｖｅＩｎ動作を伴わない第２のストア命令を実行した場合が示されており、ＭｏｖｅＩｎ動作無しでアロケート動作のみが実行される。これは図４において、タグレジスタ３２の対応キャッシュエントリのタグを、書き込みアドレスに対応するタグに書き替えることに相当する。なおＭｏｖｅＩｎ動作を伴う第１のストア命令を実行した場合であれば、主記憶装置２１の対応アドレスから読み出したキャッシュラインのデータをデータキャッシュレジスタ３４の対応キャッシュエントリに書き込んで、更にタグレジスタ３２の対応キャッシュエントリのタグを書き込みアドレスに対応するタグに書き替えることになる。
【００５２】
その後、図５のステップＳ６において、対応キャッシュエントリにストア命令により書き込みデータを書き込む。即ち、図４において、ストア命令と共に供給された書き込みデータがデータバッファ３６を介してデータキャッシュレジスタ３４の対応キャッシュエントリに格納される（Ａ５）。
【００５３】
図６は、図２に示す第２の実施例の動作を示すフローチャートである。図４と図６とを参照して、以下に第２の実施例の動作について説明する。
【００５４】
図６のステップＳ１で、ロード先のアドレス（その後のストア命令の書き込みアドレス）を指定してプリロード命令を発行する。これにより図４においてＣＰＵ２０からキャッシュメモリ２２に対してアドレスが供給される（Ａ１）。またこれと同時に、ＣＰＵ２０からキャッシュメモリ２２の制御部３１に対して、ＭｏｖｅＩｎ動作の実行／非実行を指定する信号が制御部３１に供給される（Ａ２）。具体的には、ＣＰＵ２０のデコーダ２５が実行対象の命令をデコードすることにより、実行対象の命令がＭｏｖｅＩｎ動作を伴う第１のプリロード命令であるのかＭｏｖｅＩｎ動作を伴わない第２のプリロード命令であるのかを判断できるので、この判断結果に基づいてＣＰＵ２０から制御部３１への指示がなされる。図６は、第２のプリロード命令が発行された場合の動作を示すフローチャートである。
【００５５】
以降、発行された第２のプリロード命令により、図５のステップＳ２からステップＳ５と同一の動作が図６のステップＳ２からステップＳ５として実行される。但し、図５ではステップＳ２からステップＳ５がストア命令により実行されるのに対して、図６ではステップＳ２からステップＳ５がプリロード命令により実行される点が異なる。最後に、図６のステップＳ６において、プリロード命令後のストア命令の発行により、対応キャッシュエントリにストア命令による書き込みデータを書き込む。即ち、図４において、ストア命令と共に供給された書き込みデータがデータバッファ３６を介してデータキャッシュレジスタ３４の対応キャッシュエントリに格納される（Ａ５）。
【００５６】
図７は、本発明の実施例によるキャッシュメモリシステムの別の構成を示す図である。図７において図４と同一の構成要素は同一の番号で参照し、その説明は省略する。図７のキャッシュメモリシステムは、図４に示されるキャッシュメモリシステムの構成に加え、キャッシュメモリ２２においてＲＡＭ化領域アドレス保持レジスタ４１とアドレス比較器４２とを更に含む。ＲＡＭ化領域アドレス保持レジスタ４１は、図３の設定レジスタ１４に対応するレジスタであり、ＭｏｖｅＩｎ動作無くそのままアクセス可能な領域のアドレスを格納する。ＭｏｖｅＩｎ動作無くアクセス可能であるという性質が、そのままアクセスできるＲＡＭのメモリ領域の性質と類似しているために、ここではＲＡＭ化という用語を用いている。即ち、ＲＡＭ化されたキャッシュエントリは、ＭｏｖｅＩｎ動作無くアクセスされることになる。アドレス比較器４２は、ＣＰＵ２０から供給されたアクセス対象のアドレスとＲＡＭ化領域アドレス保持レジスタ４１に格納されるアドレスとを比較して、一致／不一致の比較結果を示す信号を制御部３１に供給する。
【００５７】
図８は、図３に示す第３の実施例の動作を示すフローチャートである。図７と図８とを参照して、以下に第３の実施例の動作について説明する。なお図８は一例としてストア命令の場合について説明するが、プリロード命令の場合についても同様の動作を実行することができる。
【００５８】
図８のステップＳ１で、所望のアドレス領域（キャッシュエントリ）をＲＡＭ化対象の領域として指定する。即ち、図７において、ＣＰＵ２０からキャッシュメモリ２２のＲＡＭ化領域アドレス保持レジスタ４１にＲＡＭ化対象の所望のキャッシュエントリに対応するアドレスを供給し、このアドレスがＲＡＭ化領域アドレス保持レジスタ４１に格納される（Ａ１）。なおこの所望のアドレス領域とは、無駄なＭｏｖｅＩｎ動作の実行を無くしたいストア命令が有る場合に、このストア命令による書き込みアドレスに対応する領域である。
【００５９】
次に図８のステップＳ２で、発行されたストア命令がキャッシュエントリのＲＡＭ化領域へのストアであるか否かを判定する。即ち図７において、ストア先のアドレスを指定してストア命令を発行すると、ＣＰＵ２０からキャッシュメモリ２２に対してアドレスが供給される（Ａ２）。アドレス比較器４２は、ＲＡＭ化領域アドレス保持レジスタ４１に格納されているアドレスとＣＰＵ２０から供給されたアドレスとを比較して、アドレス一致又は不一致を示す信号を制御部３１に供給する（Ａ３）。また上記ストア命令の発行により、ＣＰＵ２０からキャッシュメモリ２２に対して書き込みデータが供給され、書き込みデータがデータバッファ３６に格納される。
【００６０】
図８のステップＳ２の判定結果がＮＯの場合、ステップＳ１０で通常のストア命令が実行される。即ち、キャッシュミスした場合にはＭｏｖｅＩｎ動作を実行してからキャッシュエントリのデータを書き込みデータで書き替える動作が実行される。図８のステップＳ２の判定結果がＹＥＳの場合、ステップＳ３で、ストア先のアドレスがキャッシュメモリ２２にアロケート済みであるか否かを判断する。これは図７においてアドレス比較器３３がアクセス対象のアドレスのタグ部分と対応キャッシュエントリのタグとを比較し、比較結果に応じてアドレス一致を示す信号又はアドレス不一致を示す信号をアサートすることに相当する（Ａ４）。アロケート済みである場合、即ちタグが一致する場合、図８のステップＳ７において、対応キャッシュエントリに対してストア対象の書き込みデータを書き込む。即ち、図７において、ストア命令と共に供給された書き込みデータがデータバッファ３６を介してデータキャッシュレジスタ３４の対応キャッシュエントリに格納される（Ａ６）。
【００６１】
図８のステップＳ３の判断の結果がアロケート済みでない場合、即ちタグが一致しない場合、図８のステップＳ４において、対応キャッシュエントリにダーティなデータがあるか否かを判断する。これはタグレジスタ３２の対応キャッシュエントリのダーティビットが有効設定／無効設定の何れであるかを判断することにより行われる。ダーティなデータが有る場合、図８のステップＳ５において、対応キャッシュエントリのデータを主記憶にライトバックする。即ち図７において、データキャッシュレジスタ３４の対応キャッシュエントリのデータを主記憶装置２１の対応アドレスに書き込みする（Ａ５）。ダーティなデータが無い場合、ステップＳ５はスキップされる。
【００６２】
次に図８のステップＳ６で、ＭｏｖｅＩｎ動作を実行することなく、対応キャッシュエントリをＲＡＭ領域としてロックする。即ち、対応キャッシュエントリを書き込みアドレスの領域としてアロケートする。これは図７において、タグレジスタ３２の対応キャッシュエントリのタグを、書き込みアドレスに対応するタグに書き替えることに相当する。その後、図８のステップＳ７において、対応キャッシュエントリにストア命令により書き込みデータを書き込む。即ち、図７において、ストア命令と共に供給された書き込みデータがデータバッファ３６を介してデータキャッシュレジスタ３４の対応キャッシュエントリに格納される（Ａ６）。
【００６３】
図８のステップＳ８で、キャッシュエントリのＲＡＭ化領域を開放するか否かを判断する。開放しない場合には、ステップＳ２に戻り以降の処理（次の命令の実行処理）を行う。開放する場合には、ステップＳ９で、キャッシュエントリのＲＡＭ化領域を開放して、通常のキャッシュエントリとして使用可能な状態にする。またこの際に、当該キャッシュエントリのデータをライトバック（データ変更を反映させるための主記憶装置２１への書き込み動作）してよい。キャッシュエントリのＲＡＭ化領域の開放は、図７において、ＣＰＵ２０からＲＡＭ化領域アドレス保持レジスタ４１及び／又は制御部３１に対して、ＲＡＭ化領域アドレス保持レジスタ４１の格納アドレスを無効値として設定するような指示をすればよい（Ａ７）。
【００６４】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００６５】
【図１】本発明の第１の実施例の動作を説明するための概念図である。
【図２】本発明の第２の実施例の動作を説明するための概念図である。
【図３】本発明の第３の実施例の動作を説明するための概念図である。
【図４】本発明の実施例によるキャッシュメモリシステムの構成を示す図である。
【図５】図１に示す第１の実施例の動作を示すフローチャートである。
【図６】図２に示す第２の実施例の動作を示すフローチャートである。
【図７】本発明の実施例によるキャッシュメモリシステムの別の構成を示す図である。
【図８】図３に示す第３の実施例の動作を示すフローチャートである。
【符号の説明】
【００６６】
１０  プログラム
１１  キャッシュメモリ
１２  主記憶装置
１３  キャッシュエントリ
１４  設定レジスタ
２０  ＣＰＵ
２１  主記憶装置
２２  キャッシュメモリ
３１  制御部
３２  タグレジスタ
３３  アドレス比較器
３４  データキャッシュレジスタ
３５  セレクタ
３６  データバッファ
３７  キャッシュ属性情報レジスタ
４１  ＲＡＭ化領域アドレス保持レジスタ
４２  アドレス比較器
【図１】
0005157424.tif 000002
【図２】
0005157424.tif 000003
【図３】
0005157424.tif 000004
【図４】
0005157424.tif 000005
【図５】
0005157424.tif 000006
【図６】
0005157424.tif 000007
【図７】
0005157424.tif 000008
【図８】
0005157424.tif 000009