(57)【特許請求の範囲】
【請求項１】
それぞれがタグアドレスと、ラインデータと、ダーティフラグとを含む複数のエントリを有するキャッシュメモリであって、
プロセッサにより第１コマンドが指示された場合、前記複数のエントリのうち、前記プロセッサにより指定される１個以上のエントリに含まれる前記タグアドレスを、前記プロセッサにより指定されるアドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットするコマンド実行部と、
前記ダーティフラグをセットしたエントリに含まれる前記ラインデータをメインメモリにライトバックするライトバック部とを備える
キャッシュメモリ。
【請求項２】
前記キャッシュメモリは、さらに、
前記複数のエントリのうち、前記プロセッサにより指定された１個以上のエントリに含まれるラインデータのリプレースを禁止する禁止部を備え、
前記コマンド実行部は、前記プロセッサにより第１コマンドが指示された場合、前記禁止部によりラインデータのリプレースが禁止されたエントリ含まれる前記タグアドレスを、前記プロセッサにより指定される前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットする
請求項１記載のキャッシュメモリ。
【請求項３】
前記コマンド実行部は、さらに、前記プロセッサにより第２コマンドが指示された場合、前記メインメモリから、前記プロセッサにより指定されるアドレスのデータを読み出し、前記複数のエントリのうち、前記プロセッサにより指定される１個以上のエントリに含まれる前記タグアドレスを前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに含まれる前記ラインデータを前記読み出したデータに書き換え、
前記コマンド実行部は、前記プロセッサにより第１コマンドが指示された場合、前記禁止部によりラインデータのリプレースが禁止されたエントリ含まれる前記タグアドレスを前記プロセッサにより指定される前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットする
請求項１又は２記載のキャッシュメモリ。
【請求項４】
前記ライトバック部は、前記プロセッサにより第３コマンドが指示された場合、前記複数のエントリのうち、前記プロセッサにより指定されたエントリに含まれる前記ラインデータを、前記メインメモリにライトバックする
請求項１〜３のいずれか１項に記載のキャッシュメモリ。
【請求項５】
前記キャッシュメモリは、１以上の前記エントリを含む複数のウェイを有し、
前記コマンド実行部は、前記プロセッサにより前記第１コマンドが指示された場合、前記複数のウェイのうち、前記プロセッサにより指定される１以上のウェイに含まれるエントリを選択し、選択したエントリに含まれる前記タグアドレスを前記プロセッサにより指定される前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットする
請求項１記載のキャッシュメモリ。
【請求項６】
プロセッサと、レベル１キャッシュメモリと、レベル２キャッシュメモリと、メモリとを備えるメモリシステムであって、
前記レベル２キャッシュメモリは、請求項１〜５のいずれか１項に記載のキャッシュメモリである
メモリシステム。
【請求項７】
メインメモリの第１アドレスに格納される第１データを当該メインメモリの第２アドレスにコピーするデータコピー方法であって、
前記第１アドレスに対応するタグアドレス及び前記第１データをキャッシュメモリに格納する格納ステップと、
前記キャッシュメモリに格納される前記第１アドレスに対応する前記タグアドレスを前記第２アドレスに対応するタグアドレスに書き換えるとともに、当該第１データに対応するダーティフラグをセットする更新ステップと、
前記キャッシュメモリから前記メインメモリに当該第１データをライトバックするライトバックステップとを含む
データコピー方法。
【請求項８】
前記データコピー方法は、さらに、
前記格納ステップの後から、前記更新ステップが完了するまでの間、前記キャッシュメモリに格納された前記第１データのリプレースを禁止する禁止ステップを含む
請求項７記載のデータコピー方法。
【請求項９】
前記格納ステップは、
前記キャッシュメモリが有する複数のエントリのうち第１エントリを指定するステップと、
前記指定された第１エントリに前記第１アドレスに対応するタグアドレス及び前記第１データを格納するステップとを含み、
前記更新ステップは、
前記第１エントリを指定するステップと、
前記指定された第１エントリに含まれる前記第１アドレスに対応する前記タグアドレスを前記第２アドレスに対応するタグアドレスに書き換えるとともに、当該第１データに対応するダーティフラグをセットするステップとを含む
請求項７又は８記載のデータコピー方法。
【請求項１０】
前記格納ステップは、
前記キャッシュメモリが有する複数のエントリのうち第１エントリを指定するステップと、
前記指定された第１エントリに前記第１アドレスに対応するタグアドレス及び前記第１データを格納するステップとを含み、
前記ライトバックステップは、
前記第１エントリを指定するステップと、
前記指定されたエントリに含まれる前記第１データを前記キャッシュメモリから前記メインメモリにライトバックするステップとを含む
請求項７又は８記載のデータコピー方法。
【請求項１１】
前記キャッシュメモリは、それぞれが複数のエントリを含む複数のウェイを有し、
前記第１アドレス及び前記第２アドレスは、それぞれ、前記ウェイ内のエントリを指定するセットインデックスを含み、
前記第１アドレスと前記第２アドレスとは、同一の前記セットインデックスを有し、
前記更新ステップは、
前記第１データが格納されるエントリを含むウェイを指定するステップと、
前記指定されたウェイに含まれる複数のエントリのうち、前記第２アドレスに含まれる前記セットインデックスで指定されるエントリを選択するステップと、
前記選択されたエントリに含まれる前記第１アドレスに対応する前記タグアドレスを前記第２アドレスに対応するタグアドレスに書き換えるとともに、当該第１データに対応するダーティフラグをセットするステップとを含む
請求項７〜１０のいずれか１項に記載のデータコピー方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ、メモリシステム、データコピー方法及びデータ書き換え方法に関し、特に、複数のウェイを有し、メモリに格納されるデータの一部を格納するキャッシュメモリに関する。
【背景技術】
【０００２】
近年のメモリシステムでは、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、又はその近傍に配置している。このようなメモリシステムでは、マイクロプロセッサがメインメモリから読み出したデータの一部、及び、メインメモリに書き込むデータの一部を、キャッシュメモリが記憶する（キャッシュする）ことによって、マイクロプロセッサのメモリアクセスを高速化させている（例えば、特許文献１参照）。
【０００３】
このような従来のキャッシュメモリは、プロセッサからメインメモリへのアクセスが発生した場合、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合（以下ヒット）、当該格納しているデータをプロセッサに出力する（リード時）、又は、当該データを更新する（ライト時）。また、キャッシュメモリは、当該アクセス先のアドレスのデータを格納していない場合（以下キャッシュミス）、プロセッサから出力された当該アドレス及びデータを格納する（ライト時）、又は、当該アドレスのデータをメインメモリから読み出したうえで格納するとともに、読み出したデータをプロセッサに出力する（リード時）。
【０００４】
また、キャッシュミスの場合には、キャッシュメモリは、当該キャッシュメモリ内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え（リプレース）、及び必要に応じてライトバック（パージ）等の処理を行う。
【０００５】
また、キャッシュメモリは、プロセッサからの命令（コマンド）に応じて、プリフェッチ及びタッチ等の処理を行う。このプリフェッチ及びタッチは、キャッシュメモリの効率向上（ヒット率向上、及びキャッシュミスレイテンシ低減）のために行われる処理である。
【０００６】
プリフェッチとは、キャッシュミスが発生する前に、近い未来に使用するデータを予めキャッシュメモリに格納する動作である。このプリフェッチにより、当該データに対してはキャッシュミスが発生しないので、データ読出し動作を高速に行える。
【０００７】
また、タッチとは、キャッシュミスが発生する前に、近い未来に書き換えを行うデータのために、予めキャッシュメモリ内の領域（キャッシュエントリ）を確保しておく動作である。このタッチにより、当該データの書き込み動作時に、キャッシュミスが発生しないので、メインメモリへのデータ書き込みを高速に行える。
【０００８】
このように、プロセッサは、キャッシュメモリにプリフェッチコマンド及びタッチコマンドを指示することにより、メインメモリへのデータ書き換えを高速化できる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】国際公開第０５／０９１１４６号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、このようなデータ書き換え動作は、より高速に実行されることが好ましい。
【００１１】
そこで、本発明は、プロセッサが、メインメモリのデータを高速に書き換えることができるキャッシュメモリ及びメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明に係るキャッシュメモリは、それぞれがタグアドレスと、ラインデータと、ダーティフラグとを含む複数のエントリを有するキャッシュメモリであって、プロセッサにより第１コマンドが指示された場合、前記複数のエントリのうち、前記プロセッサにより指定される１個以上のエントリに含まれる前記タグアドレスを、前記プロセッサにより指定されるアドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットするコマンド実行部と、前記ダーティフラグをセットしたエントリに含まれる前記ラインデータをメインメモリにライトバックするライトバック部とを備える。
【００１３】
この構成によれば、プロセッサは、本発明に係るキャッシュメモリに第１コマンドを指示することにより、エントリを指定してキャッシュメモリに格納されるタグアドレスを変更できる。よって、本発明に係るキャッシュメモリを用いてメインメモリのデータを他のアドレスにコピーする場合、コピー元のデータが格納されているエントリを指定して、タグアドレスをコピー元のアドレスに対応するタグアドレスからコピー先のアドレスに対応するタグアドレスに変更できる。さらに、本発明に係るキャッシュメモリは、タグアドレスの更新と同時に、ダーティフラグをセットする。これにより、第１コマンドを実行した後に、ライトバック（メモリへのデータの書き戻し）を行うことで、タグアドレスが変更されたエントリのデータがライトバックされる。つまり、コピー元のデータが、コピー先のアドレスにコピーされる。
【００１４】
一方、従来のキャッシュメモリを用いたメモリシステムでは、同様のコピー動作を行うためには、例えば、プロセッサが、キャッシュメモリに格納されているコピー元のデータを読み出し、かつキャッシュメモリに従来のタッチ（タグアドレスのみを変更）を指示した後に、読み出したデータをコピー先のアドレスを指定してメモリに書き込む必要がある。
【００１５】
このように、本発明に係るキャッシュメモリを用いることで、プロセッサは、読み出し及び書き込み動作を省略できる。また、従来のキャッシュメモリを用いたコピー動作では二つのエントリが必要であるのに対して、本発明に係るキャッシュメモリを用いた場合、一つのエントリのみでコピー動作を実現できるので、キャッシュメモリにおけるライン入れ替え処理の発生回数を削減できる。よって、本発明に係るキャッシュメモリを用いることで、プロセッサは、メインメモリのデータを他のアドレスに高速にコピーできる。
【００１６】
また、前記キャッシュメモリは、さらに、前記複数のエントリのうち、前記プロセッサにより指定された１個以上のエントリに含まれるラインデータのリプレースを禁止する禁止部を備え、前記コマンド実行部は、前記プロセッサにより第１コマンドが指示された場合、前記禁止部によりラインデータのリプレースが禁止されたエントリ含まれる前記タグアドレスを、前記プロセッサにより指定される前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットしてもよい。
【００１７】
この構成によれば、プロセッサは、コピー動作に用いるエントリをロックする（当該エントリを指定する）ことにより、当該コピー動作中に、コピー動作に用いるデータが、通常のキャッシュ動作又は他のコマンドによりリプレース（削除）されることを防止できる。
【００１８】
また、前記コマンド実行部は、さらに、前記プロセッサにより第２コマンドが指示された場合、前記メインメモリから、前記プロセッサにより指定されるアドレスのデータを読み出し、前記複数のエントリのうち、前記プロセッサにより指定される１個以上のエントリに含まれる前記タグアドレスを前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに含まれる前記ラインデータを前記読み出したデータに書き換え、前記コマンド実行部は、前記プロセッサにより第１コマンドが指示された場合、前記禁止部によりラインデータのリプレースが禁止されたエントリ含まれる前記タグアドレスを前記プロセッサにより指定される前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットしてもよい。
【００１９】
この構成によれば、プロセッサは、本発明に係るキャッシュメモリに第２コマンドを指示することにより、第１コマンドでタグアドレスを書き換えるデータを、指定したエントリに格納させることができる。これにより、プロセッサは、コピー元のデータが格納されるエントリを把握できるので、当該エントリを指定して、第１コマンドを実行できる。
【００２０】
また、前記ライトバック部は、前記プロセッサにより第３コマンドが指示された場合、前記複数のエントリのうち、前記プロセッサにより指定されたエントリに含まれる前記ラインデータを、前記メインメモリにライトバックしてもよい。
【００２１】
この構成によれば、プロセッサは、キャッシュメモリに第３コマンドを指示することにより、コピー動作に用いたデータが格納されるエントリのみを指定してライトバックを指示できる。これにより、全てのエントリに対してライトバックを行う場合に比べ、高速にコピー動作を行える。
【００２２】
また、前記キャッシュメモリは、１以上の前記エントリを含む複数のウェイを有し、前記コマンド実行部は、前記プロセッサにより前記第１コマンドが指示された場合、前記複数のウェイのうち、前記プロセッサにより指定される１以上のウェイに含まれるエントリを選択し、選択したエントリに含まれる前記タグアドレスを前記プロセッサにより指定される前記アドレスに対応するタグアドレスに書き換えるとともに、当該エントリに対応する前記ダーティフラグをセットしてもよい。
【００２３】
また、本発明に係るキャッシュメモリは、それぞれがタグアドレスと、ラインデータと、ダーティフラグとを含む複数のエントリを有するキャッシュメモリであって、プロセッサにより第４コマンドが指示された場合、前記複数のエントリのうちいずれかのエントリに含まれる前記タグアドレスを前記プロセッサにより指定されるアドレスに対応するタグアドレスに書き換え、当該エントリに含まれる前記ダーティフラグをセットし、当該エントリに含まれる前記ラインデータを予め定められたデータに変更するコマンド実行部と、前記ダーティフラグをセットしたエントリに含まれる前記ラインデータをメインメモリにライトバックするライトバック部とを備える。
【００２４】
この構成によれば、プロセッサは、本発明に係るキャッシュメモリに第４コマンドを指示することにより、タグアドレスの更新と、ダーティフラグのセットと、ラインデータの更新とを一つのコマンドで実現できる。これにより、第４コマンドを実行した後に、ライトバック（メモリへのデータの書き戻し）を行うことで、更新されたラインデータが更新されたタグアドレスに対応するメモリ内の領域に書き込まれる。つまり、所望のアドレスに、予め定められたデータを書き込める。
【００２５】
一方、従来のキャッシュメモリを用いたメモリシステムでは、同様の書き込み動作を行うためには、例えば、プロセッサが、キャッシュメモリに従来のタッチ（アドレスのみを変更）を指示した後に、データを書き込む必要がある。
【００２６】
このように、本発明に係るキャッシュメモリを用いることで、プロセッサは、書き込み動作を省略できる。よって、本発明に係るキャッシュメモリを用いることで、プロセッサは、メインメモリのデータを予め定められたデータに高速に書き換えることができる。
【００２７】
また、前記予め定められたデータは、全てのビットが同一のデータであってもよい。
【００２８】
また、本発明に係るメモリシステムは、プロセッサと、レベル１キャッシュメモリと、レベル２キャッシュメモリと、メモリとを備えるメモリシステムであって、前記レベル２キャッシュメモリは、前記キャッシュメモリである。
【００２９】
この構成によれば、本発明に係るキャッシュメモリがレベル２キャッシュに適用される。ここで、本発明に係るキャッシュメモリを用いた上記コピー動作、又は上記書き込み動作を行う場合、キャッシュメモリ内の一部のエントリが、当該コピー動作、又は当該書き込み動作に用いられるので、通常のキャッシュ動作等の処理能力が一時的に低下する可能性がある。ここで、レベル２キャッシュは、レベル１キャッシュに比べて、処理能力の低下がメモリシステム全体に与える影響が少ない。具体的には、レベル１キャッシュに本発明に係るキャッシュメモリを適用した場合には、プロセッサからのレベル１キャッシュがヒット時のアクセスが妨げられることになる。一方、レベル２キャッシュに本発明のキャッシュメモリを適用することで、上記ヒット時のアクセスの妨げを低減できる。つまり、本発明に係るキャッシュメモリをレベル２キャッシュに適用することで、メモリシステム全体への悪影響を低減できる。
【００３０】
また、本発明に係るデータコピー方法は、メインメモリの第１アドレスに格納される第１データを当該メインメモリの第２アドレスにコピーするデータコピー方法であって、前記第１アドレスに対応するタグアドレス及び前記第１データをキャッシュメモリに格納する格納ステップと、前記キャッシュメモリに格納される前記第１アドレスに対応する前記タグアドレスを前記第２アドレスに対応するタグアドレスに書き換えるとともに、当該第１データに対応するダーティフラグをセットする更新ステップと、前記キャッシュメモリから前記メインメモリに当該第１データをライトバックするライトバックステップとを含む。
【００３１】
これによれば、キャッシュメモリ内に格納されたコピー元の第１データに対応するタグアドレスが、コピー先の第２アドレスに対応するタグアドレスに変更される。さらに、当該タグアドレスの更新と同時に、ダーティフラグがセットされる。これにより、ライトバック（メモリへのデータの書き戻し）を行うことで、コピー元の第１アドレスに格納されていた第１データが、コピー先の第２アドレスにコピーされる。
【００３２】
このように、本発明に係るデータコピー方法は、キャッシュメモリからプロセッサへデータを送ることなく、キャッシュメモリ内でのタグアドレスの変更により、コピー動作を実現できる。よって、本発明に係るデータコピー方法は、メインメモリのデータを他のアドレスに高速にコピーできる。
【００３３】
また、前記データコピー方法は、さらに、前記格納ステップの後から、前記更新ステップが完了するまでの間、前記キャッシュメモリに格納された前記第１データのリプレースを禁止する禁止ステップを含んでもよい。
【００３４】
これによれば、コピー動作中に、キャッシュメモリに格納される第１データが、通常のキャッシュ動作等によりリプレース（削除）されることを防止できる。
【００３５】
また、前記格納ステップは、前記キャッシュメモリが有する複数のエントリのうち第１エントリを指定するステップと、前記指定された第１エントリに前記第１アドレスに対応するタグアドレス及び前記第１データを格納するステップとを含み、前記更新ステップは、前記第１エントリを指定するステップと、前記指定された第１エントリに含まれる前記第１アドレスに対応する前記タグアドレスを前記第２アドレスに対応するタグアドレスに書き換えるとともに、当該第１データに対応するダーティフラグをセットするステップとを含んでもよい。
【００３６】
これによれば、プロセッサは、コピー元の第１データが格納される第１エントリを把握できるので、当該第１エントリを指定して、タグアドレスを変更できる。
【００３７】
また、前記格納ステップは、前記キャッシュメモリが有する複数のエントリのうち第１エントリを指定するステップと、前記指定された第１エントリに前記第１アドレスに対応するタグアドレス及び前記第１データを格納するステップとを含み、前記ライトバックステップは、前記第１エントリを指定するステップと、前記指定されたエントリに含まれる前記第１データを前記キャッシュメモリから前記メインメモリにライトバックするステップとを含んでもよい。
【００３８】
これによれば、全てのエントリをライトバックするのでなく、コピー動作に用いた第１エントリのみをライトバックできるので処理速度を向上できる。
【００３９】
また、前記キャッシュメモリは、それぞれが複数のエントリを含む複数のウェイを有し、前記第１アドレス及び前記第２アドレスは、それぞれ、前記ウェイ内のエントリを指定するセットインデックスを含み、前記第１アドレスと前記第２アドレスとは、同一の前記セットインデックスを有し、前記更新ステップは、前記第１データが格納されるエントリを含むウェイを指定するステップと、前記指定されたウェイに含まれる複数のエントリのうち、前記第２アドレスに含まれる前記セットインデックスで指定されるエントリを選択するステップと、前記選択されたエントリに含まれる前記第１アドレスに対応する前記タグアドレスを前記第２アドレスに対応するタグアドレスに書き換えるとともに、当該第１データに対応するダーティフラグをセットするステップとを含んでもよい。
【００４０】
これによれば、各ウェイに複数のエントリが含まれる場合であっても、第１アドレスと第２アドレスのセットインデックスを同一にすることにより、ウェイを指定するだけで、キャッシュメモリ内の任意のエントリを指定できる。つまり、プロセッサは、ウェイを指定することにより、キャッシュメモリ内に格納されている所望のエントリのタグアドレスを変更できる。
【００４１】
また、本発明に係るデータ書き換え方法は、メインメモリの第１アドレスに格納されるデータを予め定められた第１データに書き換えるデータ書き換え方法であって、キャッシュメモリが有する複数のエントリのうちいずれかのエントリに含まれるタグアドレスを前記第１アドレスに対応するタグアドレスに書き換え、当該エントリに含まれる前記ダーティフラグをセットし、当該エントリに含まれるラインデータを前記第１データに変更する更新ステップと、前記キャッシュメモリから前記メインメモリに前記第１データをライトバックするライトバックステップとを含む。
【００４２】
これによれば、本発明に係るデータ書き換え方法は、タグアドレスの更新と、ダーティフラグを更新状態に変更する動作と、ラインデータの更新とを同時に実現できる。これにより、上記更新を行った後に、ライトバック（メモリへのデータの書き戻し）を行うことで、メインメモリ内の第１アドレスに予め定められた第１データを書き込める。このように、本発明に係るデータ書き換え方法は、メインメモリのデータを予め定められたデータに高速に書き換えることができる。
【発明の効果】
【００４３】
以上より、本発明は、プロセッサが、メインメモリのデータを高速に書き換えることができるキャッシュメモリ、メモリシステム、データコピー方法及びデータ書き換え方法を提供できる。
【図面の簡単な説明】
【００４４】
【図１】図１は、本発明の実施の形態に係るメモリシステムの構成を示す図である。
【図２】図２は、本発明の実施の形態に係るキャッシュメモリの構成を示す図である。
【図３】図３は、本発明の実施の形態に係るウェイの構成を示す図である。
【図４】図４は、本発明の実施の形態に係るコマンド処理部の構成を示す図である。
【図５】図５は、本発明の実施の形態に係るコマンドの一例を示す図である。
【図６】図６は、本発明の実施の形態に係るレジスタにデータを書き込む命令の一例を示す図である。
【図７】図７は、本発明の実施の形態に係るキャッシュメモリによるプリフェッチ動作の流れを示すフローチャートである。
【図８】図８は、本発明の実施の形態に係るキャッシュメモリによる第１タッチ動作の流れを示すフローチャートである。
【図９】図９は、本発明の実施の形態に係るキャッシュメモリによる第２タッチ動作の流れを示すフローチャートである。
【図１０】図１０は、本発明の実施の形態に係るキャッシュメモリによる第３タッチ動作の流れを示すフローチャートである。
【図１１】図１１は、本発明の実施の形態に係るキャッシュメモリによるライトバック動作の流れを示すフローチャートである。
【図１２】図１２は、本発明の実施の形態に係るメモリシステムにおけるデータコピー動作の流れを示すフローチャートである。
【図１３】図１３は、本発明の実施の形態に係るメモリに格納されるデータの一例を示す図である。
【図１４】図１４は、本発明の実施の形態に係るデータコピー動作においてプリフェッチが行われた後のウェイの状態を示す図である。
【図１５】図１５は、本発明の実施の形態に係るデータコピー動作において第２タッチが行われた後のウェイの状態を示す図である。
【図１６】図１６は、本発明の実施の形態に係るデータコピー動作が行われた後のメモリに格納されるデータを示す図である。
【図１７】図１７は、本発明の実施の形態に係るメモリシステムにおけるデータコピー動作の流れの変形例を示すフローチャートである。
【図１８】図１８は、本発明の実施の形態に係るメモリシステムにおけるゼロ書き込み動作の流れを示すフローチャートである。
【図１９】図１９は、本発明の実施の形態に係るゼロ書き込み動作において第３タッチが行われた後のウェイの状態を示す図である。
【図２０】図２０は、本発明の実施の形態に係るゼロ書き込み動作が行われた後のメモリに格納されるデータを示す図である。
【発明を実施するための形態】
【００４５】
以下、本発明に係るキャッシュメモリを含むメモリシステムの実施の形態について、図面を参照しながら詳細に説明する。
【００４６】
本発明の実施の形態に係るメモリシステムでは、キャッシュメモリの機能（コマンド）が拡張される。プロセッサは、当該キャッシュメモリの機能を用いて、メインメモリのデータを高速に書き換えることができる。
【００４７】
具体的には、本発明の実施の形態に係るキャッシュメモリは、タグアドレスの更新に加え、ダーティフラグを同時に更新する第２タッチ動作を、ウェイを指定して行う機能を有する。これにより、プロセッサは、キャッシュメモリに格納されるデータのうち、所望のデータ、つまりコピー元のデータを選択して、タグアドレスを変更できる。よって、第２タッチ動作後のデータをメインメモリに書き戻すことにより、高速なデータコピーを実現できる。
【００４８】
さらに、本発明の実施の形態に係るキャッシュメモリは、タグアドレスの更新と、ダーティフラグの更新と、ラインデータの更新とを同時に行う第３タッチ動作を行う機能を有する。よって、第３タッチ動作後にデータをメインメモリに書き戻すことにより、高速なデータ書き換えを実現できる。
【００４９】
まず、本発明の実施の形態に係るキャッシュメモリを含むメモリシステムの構成を説明する。
【００５０】
図１は、本発明の実施の形態に係るメモリシステムの概略構成を示す図である。図１に示すメモリシステムは、プロセッサ１と、Ｌ１（レベル１）キャッシュ４と、Ｌ２（レベル２）キャッシュ３と、メモリ２とを含む。
【００５１】
メモリ２は、ＳＤＲＡＭ等の大容量のメインメモリである。
【００５２】
Ｌ１キャッシュ４及びＬ２キャッシュ３は、メモリ２に比べ、高速であるが容量が少ないキャッシュメモリである。例えば、Ｌ１キャッシュ４及びＬ２キャッシュ３は、ＳＲＡＭである。また、Ｌ１キャッシュ４は、Ｌ２キャッシュ３よりプロセッサ１の近くに配置される優先度の高いキャッシュメモリである。
【００５３】
このＬ１キャッシュ４及びＬ２キャッシュ３は、プロセッサ１がメモリ２から読み出したデータの一部、及び、メモリ２に書き込むデータの一部を記憶する、所謂キャッシュ動作を行う。ここでキャッシュ動作とは、プロセッサ１からメモリ２へのアクセスが発生した場合、Ｌ２キャッシュ３が、当該アクセス先のアドレスのデータを自身が既に格納しているかを判定し、格納している場合（ヒット）、当該格納しているデータをプロセッサ１に出力する（リード時）、又は、当該データを更新する（ライト時）動作である。また、Ｌ２キャッシュ３は、当該アクセス先のアドレスのデータを格納していない場合（キャッシュミス）、プロセッサ１から出力された当該アドレス及びデータを格納する（ライト時）、又は、当該アドレスのデータをメモリ２から読み出したうえで格納するとともに、読み出したデータをプロセッサ１に出力する（リード時）。
【００５４】
また、キャッシュミスの場合には、Ｌ１キャッシュ４及びＬ２キャッシュ３は、当該Ｌ１キャッシュ４又はＬ２キャッシュ３内に、新たなアドレス及びデータを格納する空き領域があるか否かを判断し、空き領域がない場合には、ライン入れ替え（リプレース）、及び必要に応じてライトバック（パージ）等の処理を行う。なお、キャッシュ動作は、公知の技術であるので、さらに詳細な説明は省略する。
【００５５】
また、図１に示すプロセッサ１、Ｌ１キャッシュ４、Ｌ２キャッシュ３、メモリ２は、典型的には集積回路であるＬＳＩとして実現される。これらは個別に１チップ化されてもよいし、一部又は全てを含むように１チップ化されてもよい。例えば、プロセッサ１とＬ１キャッシュ４とが１チップ化されていてもよい。また、各構成要素が、複数のチップで実現されてもよい。
【００５６】
以下では、Ｌ２キャッシュ３に本発明に係るキャッシュメモリを適用した例について説明する。また、Ｌ２キャッシュ３の具体例として、４ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。
【００５７】
図２は、Ｌ２キャッシュ３の構成例を示すブロック図である。図２に示すＬ２キャッシュ３は、アドレスレジスタ２０と、メモリＩ／Ｆ２１と、デコーダ３０と、４つのウェイ３１ａ〜３１ｄと、４つの比較器３２ａ〜３２ｄと、４つのアンド回路３３ａ〜３３ｄと、オア回路３４と、セレクタ３５及び３６と、デマルチプレクサ３７と、制御部３８とを備える。なお、４つのウェイ３１ａ〜３１ｄを特に区別しない場合には、ウェイ３１と記す。
【００５８】
アドレスレジスタ２０は、メモリ２へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは３２ビットであるものとする。図２に示すように、アクセスアドレスは、最上位ビットから順に、２１ビットのタグアドレス５１と、４ビットのセットインデックス（ＳＩ）５２と、５ビットのワードインデックス（ＷＩ）５３とを含む。
【００５９】
ここで、タグアドレス５１は、ウェイ３１にマッピングされるメモリ２中の領域（そのサイズはセット数×ブロックである）を指す。この領域のサイズは、タグアドレス５１よりも下位のアドレスビット（Ａ１０〜Ａ０）で定まるサイズつまり２ｋバイトであり、１つのウェイ３１のサイズでもある。
【００６０】
セットインデックス５２はウェイ３１ａ〜３１ｂに跨る複数セットの１つを指す。このセット数は、セットインデックス５２が４ビットなので１６セットある。タグアドレス５１及びセットインデックス５２で特定されるキャッシュエントリは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックス５２よりも下位のアドレスビット（Ａ６〜Ａ０）で定まるサイズつまり１２８バイトである。１ワードを４バイトとすると、１ラインデータは３２ワードである。
【００６１】
ワードインデックス（ＷＩ）５３は、ラインデータを構成する複数ワード中の１ワードを指す。また、アドレスレジスタ２０中の最下位２ビット（Ａ１、Ａ０）は、ワードアクセス時には無視される。
【００６２】
メモリＩ／Ｆ２１は、Ｌ２キャッシュ３からメモリ２をアクセスするためのインターフェースである。具体的には、メモリＩ／Ｆ２１は、Ｌ２キャッシュ３からメモリ２へのデータのライトバック、及びメモリ２からＬ２キャッシュ３へのデータのロード等を行う。
【００６３】
デコーダ３０は、セットインデックス５２の４ビットをデコードし、４つのウェイ３１ａ〜３１ｄに跨る１６セット中の１つを選択する。
【００６４】
４つのウェイ３１ａ〜３１ｄは、同じ構成を有し、各ウェイ３１は、２ｋバイトの容量を有する。
【００６５】
図３は、ウェイ３１の構成を示す図である。図３に示すように、各ウェイ３１は、１６個のキャッシュエントリ４０を有する。各キャッシュエントリ４０は、２１ビットのタグ４１と、バリッドフラグ４２と、ダーティフラグ４３と、１２８バイトのラインデータ４４とを有する。
【００６６】
タグ４１は、メモリ２上のアドレスの一部であり、２１ビットのタグアドレス５１のコピーである。
【００６７】
ラインデータ４４は、タグアドレス５１及びセットインデックス５２により特定されるブロック中の１２８バイトデータのコピーである。
【００６８】
バリッドフラグ４２は、当該キャッシュエントリ４０のデータが有効か否かを示す。例えば、データが有効な場合、バリッドフラグ４２は「１」であり、データが無効な場合、バリッドフラグ４２は「０」である。
【００６９】
ダーティフラグ４３は、当該キャッシュエントリ４０にプロセッサ１から書き込みがあったか否か、つまりラインデータ４４が更新されている状態であるか否かを示す。言い換えると、ダーティフラグ４３は、当該キャッシュエントリ４０中にキャッシュされたラインデータ４４が存在するが、プロセッサ１からの書き込みにより当該ラインデータ４４がメモリ２中のデータと異なるため、当該ラインデータ４４をメモリ２に書き戻すことが必要であるか否かを示す。例えば、ラインデータ４４が更新されている場合、ダーティフラグ４３は「１」であり、ラインデータ４４が更新されていない場合、ダーティフラグ４３は「０」である。また、ダーティフラグ４３を「１」にすることを、ダーティフラグをセットするとも言う。
【００７０】
比較器３２ａは、アドレスレジスタ２０中のタグアドレス５１と、セットインデックス５２により選択されたセットに含まれる４つのタグ４１中のウェイ３１ａのタグ４１とが一致するか否かを比較する。比較器３２ｂ〜３２ｃについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。
【００７１】
アンド回路３３ａは、バリッドフラグ４２と比較器３２ａの比較結果とが一致するか否かを比較する。この比較結果をｈ０とする。比較結果ｈ０が「１」である場合は、アドレスレジスタ２０中のタグアドレス５１及びセットインデックス５２に対応するラインデータ４４が存在すること、つまりウェイ３１ａにおいてヒットしたことを意味する。また、比較結果ｈ０が「０」である場合は、キャッシュミスしたことを意味する。アンド回路３３ｂ〜３３ｄについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。つまり、その比較結果ｈ１〜ｈ３は、ウェイ３１ｂ〜３１ｄでヒットしたかミスしたかを意味する。
【００７２】
オア回路３４は、比較結果ｈ０〜ｈ３のオアをとる。このオアの結果をｈｉｔとする。ｈｉｔは、キャッシュメモリにヒットしたか否かを示す。
【００７３】
セレクタ３５は、選択されたセットにおけるウェイ３１ａ〜３１ｄのラインデータ４４のうち、ヒットしたウェイ３１のラインデータ４４を選択する。
【００７４】
セレクタ３６は、セレクタ３５により選択された３２ワードのラインデータ４４にうち、ワードインデックス５３で示される１ワードを選択する。
【００７５】
デマルチプレクサ３７は、キャッシュエントリ４０にデータを書き込む際に、ウェイ３１ａ〜３１ｄの１つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
【００７６】
制御部３８は、Ｌ２キャッシュ３全体の制御を行う。具体的には、プロセッサ１がメモリ２から読み出したデータの一部、及び、メモリ２に書き込むデータの一部を記憶する、所謂キャッシュ動作を制御する。この制御部３８は、コマンド処理部３９を含む。
【００７７】
図４は、コマンド処理部３９の構成を示す図である。
【００７８】
コマンド処理部３９は、プロセッサ１から指定されたコマンドを実行する。このコマンド処理部３９は、アドレスレジスタ１００と、コマンドレジスタ１０１と、ウェイロックレジスタ１０４と、ウェイ指定レジスタ１０５と、コマンド実行部１０６と、状態レジスタ１０７とを備える。
【００７９】
ここで、アドレスレジスタ１００（スタートアドレスレジスタ１０２及びサイズレジスタ１０３）、コマンドレジスタ１０１、ウェイロックレジスタ１０４、及びウェイ指定レジスタ１０５は、プロセッサ１から直接アクセス可能（データ書き換え可能）なレジスタである。
【００８０】
コマンドレジスタ１０１は、プロセッサ１により指定されたコマンド１２１を保持する。
【００８１】
図５は、コマンド１２１のフォーマットの一例を示す図である。このコマンド１２１は、コマンド内容６４を含む。ここで、コマンド内容６４は、プリフェッチコマンドと、第１タッチコマンドと、第２タッチコマンドと、第３タッチコマンドと、ライトバックコマンドとのうちの何れかを示す。
【００８２】
アドレスレジスタ１００は、プロセッサ１により指定されたアドレス範囲を保持する。このアドレスレジスタ１００は、スタートアドレスレジスタ１０２と、サイズレジスタ１０３とを備える。
【００８３】
スタートアドレスレジスタ１０２は、上記アドレス範囲の最初のアドレスである、プロセッサ１により指定されたスタートアドレス１２２を保持する。なお、スタートアドレス１２２は、メモリ２のアドレス（３２ビット）の全てであってもよいし、当該アドレスの一部であってもよい。例えば、スタートアドレス１２２は、タグアドレス５１及びセットインデックス５２のみを含むアドレスであってもよい。
【００８４】
サイズレジスタ１０３は、プロセッサ１により指定されたサイズ１２３を保持する。このサイズ１２３は、スタートアドレス１２２から上記アドレス範囲の最後のアドレスまでの大きさを示す。なお、サイズ１２３の単位は、バイト数であっても、ライン数（キャッシュエントリ数）であってもよく、予め定められた単位であればよい。
【００８５】
ウェイロックレジスタ１０４は、プロセッサ１により指定された１個以上のウェイ３１を示すロック状態１２４を保持する。このロック状態１２４は、４ビットから構成され、各ビットが４個のウェイ３１ａ〜３１ｄにそれぞれ対応し、対応するウェイ３１がロックされているか否かを示す。例えば、ロック状態１２４が「０」の場合、対応するウェイ３１がロックされていないことを示し、ロック状態１２４が「１」の場合、対応するウェイ３１がロックされていることを示す。また、ロックされたウェイ３１は、リプレースが禁止され、特定のコマンドを除く、通常のコマンド動作、及び通常のキャッシュ動作に使用されない。
【００８６】
ウェイ指定レジスタ１０５は、プロセッサ１により指定された１個以上のウェイ３１を示す指定状態１２５を保持する。この指定状態１２５は、４ビットから構成され、各ビットが４個のウェイ３１ａ〜３１ｄにそれぞれ対応する。例えば、指定状態１２５が「０」の場合、対応するウェイ３１が指定されていないことを示し、指定状態１２５が「１」の場合、対応するウェイ３１が指定されていることを示す。
【００８７】
図６は、コマンドレジスタ１０１、スタートアドレスレジスタ１０２、サイズレジスタ１０３、ウェイロックレジスタ１０４、及びウェイ指定レジスタ１０５にデータを書き込む命令の一例を示す図である。図６に示す命令は、通常の転送命令（ｍｏｖ命令）６１であり、ソースオペランド（Ｒ）６２によりレジスタが指定され、デスティネーションオペランド（Ｄ）６３としてレジスタに格納するデータが指定される。
【００８８】
具体的には、ソースオペランド６２に、コマンドレジスタ１０１、スタートアドレスレジスタ１０２、サイズレジスタ１０３、ウェイロックレジスタ１０４、又はウェイ指定レジスタ１０５が指定され、デスティネーションオペランド６３に、コマンド１２１、スタートアドレス１２２、サイズ１２３、ロック状態１２４、又は指定状態１２５が指定される。
【００８９】
コマンド実行部１０６は、コマンドレジスタ１０１に保持されるコマンド１２１で指定されるコマンドを実行する。このコマンド実行部１０６は、プリフェッチ部１１１と、第１タッチ部１１２ａと、第２タッチ部１１２ｂと、第３タッチ部１１２ｃと、ライトバック部１１３と、禁止部１１４とを含む。
【００９０】
プリフェッチ部１１１は、コマンドレジスタ１０１にプリフェッチコマンドが保持される場合に、プリフェッチ動作を実行する。また、プリフェッチ部１１１は、指定状態１２５において、いずれかのウェイ３１が指定されている場合には、当該ウェイ３１を用いてプリフェッチ動作を実行する。
【００９１】
ここでプリフェッチ動作とは、メモリ２から、アドレスレジスタ１００に保持されるアドレス範囲のデータを読み出し、読み出したデータを当該Ｌ２キャッシュ３に格納する動作である。具体的には、プリフェッチ部１１１は、複数のキャッシュエントリ４０のうちいずれかを選択し、選択したキャッシュエントリ４０に含まれるタグ４１を、アドレスレジスタ１００に保持されるアドレス範囲に対応するタグアドレス５１に書き換えるとともに、当該キャッシュエントリ４０に含まれるラインデータ４４を読み出したデータに書き換える。
【００９２】
第１タッチ部１１２ａは、コマンドレジスタ１０１に第１タッチコマンドが保持される場合に、第１タッチ動作を実行する。また、第１タッチ部１１２ａは、指定状態１２５において、いずれかのウェイ３１が指定されている場合には、当該ウェイ３１を用いて第１タッチ動作を実行する。
【００９３】
ここで第１タッチ動作とは、従来のタッチ動作と同様に、タグ４１のみを書き換える動作である。具体的には、第１タッチ部１１２ａは、複数のウェイ３１に含まれる複数のキャッシュエントリ４０のうちいずれかを選択し、選択したキャッシュエントリ４０に含まれるタグ４１を、アドレスレジスタ１００に保持されるアドレス範囲に対応するタグアドレス５１に書き換える。
【００９４】
第２タッチ部１１２ｂは、コマンドレジスタ１０１に第２タッチコマンドが保持される場合に、第２タッチ動作を実行する。また、第２タッチ部１１２ｂは、指定状態１２５において、いずれかのウェイ３１が指定されている場合には、当該ウェイ３１を用いて第２タッチ動作を実行する。
【００９５】
ここで第２タッチ動作とは、第１タッチ動作に加え、さらに、選択したキャッシュエントリ４０に含まれるダーティフラグ４３を、「１」に更新する動作である。
【００９６】
第３タッチ部１１２ｃは、コマンドレジスタ１０１に第３タッチコマンドが保持される場合に、第３タッチ動作を実行する。また、第３タッチ部１１２ｃは、指定状態１２５において、いずれかのウェイ３１が指定されている場合には、当該ウェイ３１を用いて第３タッチ動作を実行する。
【００９７】
ここで第３タッチ動作とは、第２タッチ動作に加え、さらに、選択したキャッシュエントリ４０に含まれるラインデータ４４を全て「０」に更新する動作である。
【００９８】
ライトバック部１１３は、コマンドレジスタ１０１にライトバックコマンドが保持される場合に、ライトバック動作を実行する。また、プリフェッチ部１１１は、指定状態１２５において、いずれかのウェイ３１が指定されている場合には、当該ウェイ３１に対してライトバック動作を実行する。
【００９９】
ここでライトバック動作とは、Ｌ２キャッシュ３が格納するデータのうち、プロセッサ１により更新されたデータをメモリ２に書き戻す動作である。具体的には、ライトバック部１１３は、ダーティフラグ４３が「１」であるキャッシュエントリ４０を選択し、選択したキャッシュエントリ４０に含まれるラインデータ４４を、当該キャッシュエントリ４０に含まれるタグ４１に対応するメモリ２のアドレス範囲に書き込む。
【０１００】
禁止部１１４は、ウェイロックレジスタ１０４に保持されるロック状態１２４に基づき、制御部３８によるキャッシュ動作及びコマンド実行に用いられるウェイ３１を制御する。つまり、禁止部１１４は、ロック状態１２４が「１」のウェイ３１に含まれるラインデータ４４に対するリプレース（削除）を禁止する。ここで、リプレースとは、全てのエントリが使用されている場合に、新たにデータを格納するために、所定のアルゴリズムに基づいてキャッシュエントリ４０を選択し、選択したキャッシュエントリ４０のラインデータ４４を追い出す処理である。具体的には、選択されたキャッシュエントリ４０のダーティフラグ４３が「０」の場合には、当該キャッシュエントリ４０に新たなタグ４１及びラインデータ４４が書き込まれ、選択されたキャッシュエントリ４０のダーティフラグ４３が「１」の場合には、当該キャッシュエントリ４０のラインデータ４４がメモリ２にライトバックされた後、当該キャッシュエントリ４０に新たなタグ４１及びラインデータ４４が書き込まれる。
【０１０１】
また、禁止部１１４は、例外的に、ロック状態１２４で示されるウェイ３１が指定状態１２５で指定される場合には、コマンド実行を許可する。
【０１０２】
状態レジスタ１０７は、コマンド実行部１０６がコマンドを実行中であるか否かを示す実行状態１２７を保持する。例えば、実行状態１２７が「０」の場合、コマンド実行部１０６がコマンドを実行していないことを示し、実行状態１２７が「１」の場合、コマンド実行部１０６がコマンドを実行中であることを示す。
【０１０３】
次に、本発明の実施の形態に係るＬ２キャッシュ３の動作を説明する。
【０１０４】
まず、プリフェッチ動作について説明する。プリフェッチとは、キャッシュメモリの効率向上（ヒット率向上、及びキャッシュミスレイテンシ低減）のため、キャッシュミスが発生する前に、近い未来に使用するデータを予めキャッシュメモリに格納する動作である。具体的には、Ｌ２キャッシュ３は、プロセッサ１から指定されたアドレス範囲のデータを格納する。
【０１０５】
また、本発明の実施の形態に係るＬ２キャッシュ３では、ウェイロックレジスタ１０４に保持されるロック状態１２４と、ウェイ指定レジスタ１０５に保持される指定状態１２５とに基づき、データが格納されるウェイ３１が選択される。
【０１０６】
図７は、Ｌ２キャッシュ３によるプリフェッチ動作の流れを示すフローチャートである。
【０１０７】
コマンドレジスタ１０１にプリフェッチコマンドが保持された場合（Ｓ１０１でＹｅｓ）、プリフェッチ部１１１は、ウェイ指定レジスタ１０５に保持される指定状態１２５を参照することにより、ウェイ３１が指定されているか否かを判定する（Ｓ１０２）。
【０１０８】
ウェイ３１が指定されていない場合、つまり、指定状態１２５に含まれる、４つのウェイ３１ａ〜３１ｄに対応するビットが全て「０」の場合（Ｓ１０２でＮｏ）、次に、プリフェッチ部１１１は、ウェイロックレジスタ１０４に保持されるロック状態１２４を参照することにより、ウェイ３１がロックされているか否かを判定する（Ｓ１０３）。
【０１０９】
ウェイ３１がロックされていない場合、つまり、ロック状態１２４に含まれる、４つのウェイ３１ａ〜３１ｄに対応するビットが全て「０」の場合（Ｓ１０３でＮｏ）、プリフェッチ部１１１は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式で、４つのウェイ３１ａ〜３１ｄからデータ格納先のウェイ３１を選択する（Ｓ１０４）。
【０１１０】
一方、ウェイ３１がロックさている場合、つまり、ロック状態１２４に含まれる４つのビットのうち１つ以上が「１」の場合（Ｓ１０３でＹｅｓ）、プリフェッチ部１１１は、ロックされていない（ロック状態１２４が「０」である）ウェイ３１から、ＬＲＵ方式でデータ格納先のウェイ３１を選択する（Ｓ１０５）。
【０１１１】
また、ウェイ３１が指定されている場合、つまり、指定状態１２５に含まれる４つのビットのうち１つ以上が「１」の場合（Ｓ１０２でＹｅｓ）、プリフェッチ部１１１は、指定されている（指定状態１２５が「１」である）ウェイ３１をデータ格納先のウェイ３１として選択する（Ｓ１０６）。
【０１１２】
次に、プリフェッチ部１１１は、ステップＳ１０４、Ｓ１０５又はＳ１０６で選択されたウェイ３１を用いて、プリフェッチを行う。
【０１１３】
まず、プリフェッチ部１１１は、スタートアドレスレジスタ１０２に保持されるスタートアドレス１２２と、サイズレジスタ１０３に保持されるサイズ１２３とを用いて、プリフェッチを行うアドレスを選択する（Ｓ１０７）。具体的には、プリフェッチ部１１１は、スタートアドレス１２２からサイズ１２３分のアドレス範囲を、プリフェッチ対象のアドレス範囲と決定し、プリフェッチ対象のアドレス範囲のデータを１２８バイト単位でプリフェッチする。
【０１１４】
次に、プリフェッチ部１１１は、ステップＳ１０４、Ｓ１０５又はＳ１０６で選択したウェイ３１に含まれ、かつステップＳ１０７で選択したアドレスのセットインデックス５２で指定されるキャッシュエントリ４０のダーティフラグ４３を確認する（Ｓ１０８）。
【０１１５】
ダーティフラグ４３が「１」であれば（Ｓ１０８でＹｅｓ）、プリフェッチ部１１１は、ライトバックを行う（Ｓ１０９）。
【０１１６】
ダーティフラグ４３が「０」の場合（Ｓ１０８でＮｏ）、又は、ライトバック（Ｓ１０９）の後、プリフェッチ部１１１は、ステップＳ１０７で選択したアドレス範囲のデータをメモリ２から読み出し、ステップＳ１０４、Ｓ１０５又はＳ１０６で選択したウェイ３１に格納する（Ｓ１１０）。具体的には、プリフェッチ部１１１は、ステップＳ１０７で選択したアドレス範囲のタグアドレス５１にタグ４１を更新し、メモリ２から読み出したデータにラインデータ４４を更新し、バリッドフラグ４２を「１」に設定し、ダーティフラグ４３を「０」に設定する。
【０１１７】
また、スタートアドレス１２２からサイズ１２３分のアドレス範囲のデータを全てプリフェッチし終えてない場合（Ｓ１１１でＮｏ）、プリフェッチ部１１１は、次に１２８バイトのアドレス範囲を選択し（Ｓ１０８）、選択したアドレス範囲に対して、上述したステップＳ１０８以降と同様の処理（Ｓ１０８〜Ｓ１１０）を、全てデータをプリフェッチし終わるまで（Ｓ１１１でＹｅｓ）繰り返し行う。
【０１１８】
以上のように、本発明の実施の形態に係るＬ２キャッシュ３は、プロセッサ１により書き込まれた指定状態１２５を保持することにより、プロセッサ１から指定されたウェイ３１を用いて、プリフェッチを行える。
【０１１９】
さらに、本発明の実施の形態に係るＬ２キャッシュ３は、プロセッサ１により書き込まれたロック状態１２４を保持することにより、プロセッサ１から指定されたウェイ３１の更新（リプレース）を禁止できる。
【０１２０】
次に、Ｌ２キャッシュ３による第１タッチ動作について説明する。
【０１２１】
ここで、タッチとは、キャッシュメモリの効率向上（ヒット率向上、及びキャッシュミスレイテンシ低減）のため、キャッシュミスが発生する前に、近い未来に書き換えを行うデータのために予めキャッシュエントリ４０を確保しておく動作である。具体的には、Ｌ２キャッシュ３は、プロセッサ１から指定されたアドレス範囲のデータを格納するためのキャッシュエントリ４０を確保する。
【０１２２】
さらに、本発明の実施の形態に係るＬ２キャッシュ３では、ウェイロックレジスタ１０４に保持されるロック状態１２４と、ウェイ指定レジスタ１０５に保持される指定状態１２５とに基づき、タッチに用いるウェイ３１が選択される。
【０１２３】
図８は、Ｌ２キャッシュ３による第１タッチ動作の流れを示すフローチャートである。
【０１２４】
コマンドレジスタ１０１に第１タッチコマンドが保持された場合（Ｓ２０１でＹｅｓ）、第１タッチ部１１２ａは、ウェイ指定レジスタ１０５に保持される指定状態１２５を参照することにより、ウェイ３１が指定されているか否かを判定する（Ｓ２０２）。
【０１２５】
ウェイ３１が指定されていない場合、つまり、指定状態１２５に含まれる、４つのウェイ３１ａ〜３１ｄに対応するビットが全て「０」の場合（Ｓ２０２でＮｏ）、次に、第１タッチ部１１２ａは、ウェイロックレジスタ１０４に保持されるロック状態１２４を参照することにより、ウェイ３１がロックされているか否かを判定する（Ｓ２０３）。
【０１２６】
ウェイ３１がロックされていない場合、つまり、ロック状態１２４に含まれる、４つのウェイ３１ａ〜３１ｄに対応するビットが全て「０」の場合（Ｓ２０３でＮｏ）、第１タッチ部１１２ａは、ＬＲＵ方式で、４つのウェイ３１ａ〜３１ｄからタッチに用いるウェイ３１を選択する（Ｓ２０４）。
【０１２７】
一方、ウェイ３１がロックさている場合、つまり、ロック状態１２４に含まれる４つのビットのうち１つ以上が「１」の場合（Ｓ２０３でＹｅｓ）、第１タッチ部１１２ａは、ＬＲＵ方式で、ロックされていない（ロック状態１２４が「０」である）ウェイ３１からタッチに用いるウェイ３１を選択する（Ｓ２０５）。
【０１２８】
また、ウェイ３１が指定されている場合、つまり、指定状態１２５に含まれる４つのビットのうち１つ以上が「１」の場合（Ｓ２０２でＹｅｓ）、第１タッチ部１１２ａは、指定されている（指定状態１２５が「１」である）ウェイ３１をタッチに用いるウェイ３１として選択する（Ｓ２０６）。
【０１２９】
次に、第１タッチ部１１２ａは、ステップＳ２０４、Ｓ２０５又はＳ２０６で選択されたウェイ３１を用いて、第１タッチを行う。
【０１３０】
まず、第１タッチ部１１２ａは、スタートアドレスレジスタ１０２に保持されるスタートアドレス１２２と、サイズレジスタ１０３に保持されるサイズ１２３とを用いて、タッチを行うアドレスを選択する（Ｓ２０７）。具体的には、第１タッチ部１１２ａは、スタートアドレス１２２からサイズ１２３分のアドレス範囲を、タッチ対象のアドレス範囲と決定し、タッチ対象のアドレス範囲を、１２８バイトのデータに対応するアドレス単位でタッチする。
【０１３１】
次に、第１タッチ部１１２ａは、ステップＳ２０４、Ｓ２０５又はＳ２０６で選択したウェイ３１に含まれ、かつステップＳ２０７で選択したアドレスのセットインデックス５２で指定されるキャッシュエントリ４０のダーティフラグ４３を確認する（Ｓ２０８）。
【０１３２】
ダーティフラグ４３が「１」であれば（Ｓ２０８でＹｅｓ）、第１タッチ部１１２ａは、ライトバックを行う（Ｓ２０９）。
【０１３３】
ダーティフラグ４３が「０」の場合（Ｓ２０８でＮｏ）、又は、ライトバック（Ｓ２０９）の後、第１タッチ部１１２ａは、ステップＳ２０４、Ｓ２０５又はＳ２０６で選択したウェイ３１に含まれ、ステップＳ２０７で選択したアドレスのセットインデックス５２で指定されるキャッシュエントリ４０の、タグ４１を更新する（Ｓ２１０）。具体的には、第１タッチ部１１２ａは、ステップＳ２０７で選択したアドレスに対応するタグアドレス５１にタグ４１を更新し、バリッドフラグ４２を「１」に設定し、ダーティフラグ４３を「０」に設定する。
【０１３４】
また、スタートアドレス１２２からサイズ１２３分のアドレス範囲を全てタッチし終えてない場合（Ｓ２１１でＮｏ）、第１タッチ部１１２ａは、次に１２８バイトのデータに対応するアドレスを選択し（Ｓ２０８）、選択したアドレスに対して、上述したステップＳ２０８以降と同様の処理（Ｓ２０８〜Ｓ２１０）を、全てのアドレス範囲をタッチし終わるまで（Ｓ２１１でＹｅｓ）繰り返し行う。
【０１３５】
以上のように、本発明の実施の形態に係るＬ２キャッシュ３は、プロセッサ１により書き込まれた指定状態１２５を保持することにより、プロセッサ１から指定されたウェイ３１を用いて、タッチを行える。
【０１３６】
さらに、本発明の実施の形態に係るＬ２キャッシュ３は、プロセッサ１により書き込まれたロック状態１２４を保持することにより、プロセッサ１から指定されたウェイ３１の更新を禁止できる。
【０１３７】
次に、第２タッチ動作を説明する。第２タッチは、第１タッチ（タグ４１の更新）に加え、ダーティフラグ４３を更新する動作である。
【０１３８】
図９は、Ｌ２キャッシュ３による第２タッチ動作の流れを示すフローチャートである。
【０１３９】
なお、図９に示す処理は、図８に示す第１タッチ動作に対して、ステップＳ２２１及びＳ２２２の処理が異なる。なお、それ以外の処理は、図８に示す第１タッチ動作と同様であり、以下、相違点のみを説明する。また、図８に示す処理は、第１タッチ部１１２ａにより実行されたが、図９に示す処理は、第２タッチ部１１２ｂにより実行される。
【０１４０】
コマンドレジスタ１０１に第２タッチコマンドが保持された場合（Ｓ２２１でＹｅｓ）、第２タッチ部１１２ｂは、上述したステップＳ２０２以降と同様の処理を行う。
【０１４１】
また、ダーティフラグ４３が「０」の場合（Ｓ２０８でＮｏ）、又は、ライトバック（Ｓ２０９）の後、第２タッチ部１１２ｂは、ステップＳ２０４、Ｓ２０５又はＳ２０６で選択したウェイ３１に含まれ、ステップＳ２０７で選択したアドレスのセットインデックス５２で指定されるキャッシュエントリ４０に含まれるタグ４１及びダーティフラグ４３を更新する（Ｓ２２２）。具体的には、第２タッチ部１１２ｂは、ステップＳ２０７で選択したアドレス範囲のタグアドレス５１にタグ４１を更新し、バリッドフラグ４２を「１」に設定し、ダーティフラグ４３を「１」に設定する。
【０１４２】
次に、第３タッチ動作を説明する。第３タッチは、第２タッチ（タグ４１及びダーティフラグ４３の更新）に加え、ラインデータ４４を全て「０」に更新する動作である。
【０１４３】
図１０は、Ｌ２キャッシュ３による第３タッチ動作の流れを示すフローチャートである。
【０１４４】
なお、図１０に示す処理は、図８に示す第１タッチ動作に対して、ステップＳ２３１及びＳ２３２の処理が異なる。なお、それ以外の処理は、図８に示す第１タッチ動作と同様であり、以下、相違点のみを説明する。また、図８に示す処理は、第１タッチ部１１２ａにより実行されたが、図１０に示す処理は、第３タッチ部１１２ｃにより実行される。
【０１４５】
コマンドレジスタ１０１に第３タッチコマンドが保持された場合（Ｓ２３１でＹｅｓ）、第３タッチ部１１２ｃは、上述したステップＳ２０２以降と同様の処理を行う。
【０１４６】
また、ダーティフラグ４３が「０」の場合（Ｓ２０８でＮｏ）、又は、ライトバック（Ｓ２０９）の後、第３タッチ部１１２ｃは、ステップＳ２０４、Ｓ２０５又はＳ２０６で選択したウェイ３１に含まれ、ステップＳ２０７で選択したアドレスのセットインデックス５２で指定されるキャッシュエントリ４０に含まれるタグ４１とダーティフラグ４３とラインデータ４４とを更新する（Ｓ２３２）。具体的には、第３タッチ部１１２ｃは、ステップＳ２０７で選択したアドレス範囲のタグアドレス５１にタグ４１を更新し、ラインデータ４４に含まれる全てのビットを「０」に更新し、バリッドフラグ４２を「１」に設定し、ダーティフラグ４３を「１」に設定する。
【０１４７】
次に、ライトバック動作を説明する。ライトバックとは、ダーティフラグ４３が「１」のラインデータ４４を、メモリ２に書き込む動作である。つまり、ライトバックとは、キャッシュメモリにおいて、更新されたデータをメモリ２に書き戻す動作である。
【０１４８】
図１１は、Ｌ２キャッシュ３によるライトバック動作の流れを示すフローチャートである。
【０１４９】
コマンドレジスタ１０１にライトバックコマンドが保持された場合（Ｓ３０１でＹｅｓ）、ライトバック部１１３は、ウェイ指定レジスタ１０５に保持される指定状態１２５を参照することにより、ウェイ３１が指定されているか否かを判定する（Ｓ３０２）。
【０１５０】
ウェイ３１が指定されていない場合、つまり、指定状態１２５に含まれる、４つのウェイ３１ａ〜３１ｄに対応するビットが全て「０」の場合（Ｓ３０２でＮｏ）、次に、ライトバック部１１３は、ウェイロックレジスタ１０４に保持されるロック状態１２４を参照することにより、ウェイ３１がロックされているか否かを判定する（Ｓ３０３）。
【０１５１】
ウェイ３１がロックされていない場合、つまり、ロック状態１２４に含まれる、４つのウェイ３１ａ〜３１ｄに対応するビットが全て「０」の場合（Ｓ３０３でＮｏ）、ライトバック部１１３は、全てのウェイ３１ａ〜３１ｄを、ライトバック対象として選択する（Ｓ３０４）。
【０１５２】
一方、ウェイ３１がロックさている場合、つまり、ロック状態１２４に含まれる４つのビットのうち１つ以上が「１」の場合（Ｓ３０３でＹｅｓ）、ライトバック部１１３は、ロックされていない（ロック状態１２４が「０」である）全てのウェイ３１を、ライトバック対象として選択する（Ｓ３０５）。
【０１５３】
また、ウェイ３１が指定されている場合、つまり、指定状態１２５に含まれる４つのビットのうち１つ以上が「１」の場合（Ｓ３０２でＹｅｓ）、ライトバック部１１３は、指定されている（指定状態１２５が「１」である）ウェイ３１を、ライトバック対象として選択する（Ｓ３０６）。
【０１５４】
次に、ライトバック部１１３は、ステップＳ３０４、Ｓ３０５又はＳ３０６で選択されたウェイ３１に対して、ライトバックを行う。
【０１５５】
まず、ライトバック部１１３は、ステップＳ３０４、Ｓ３０５又はＳ３０６で選択したウェイ３１に含まれる各キャッシュエントリ４０のダーティフラグ４３を確認する（Ｓ３０７）。
【０１５６】
次に、ライトバック部１１３は、ダーティフラグ４３が「１」のキャッシュエントリ４０に対して（Ｓ３０７でＹｅｓ）、ライトバックを行う（Ｓ３０８）。具体的には、ライトバック部１１３は、ダーティフラグ４３が「１」のキャッシュエントリ４０のラインデータ４４を、メモリ２に書き込み、ダーティフラグ４３を「０」に変更する。
【０１５７】
また、ダーティフラグ４３が「０」のキャッシュエントリ４０に対しては（Ｓ３０７でＮｏ）、ライトバック部１１３は、ライトバックを行わない。
【０１５８】
以上のように、本発明の実施の形態に係るＬ２キャッシュ３は、プロセッサ１により書き込まれた指定状態１２５を保持することにより、プロセッサ１から指定されたウェイ３１に対してのみ、ライトバックを行える。
【０１５９】
さらに、本発明の実施の形態に係るＬ２キャッシュ３は、プロセッサ１により書き込まれたロック状態１２４を保持することにより、プロセッサ１から指定されたウェイ３１の更新を禁止できる。
【０１６０】
次に、本発明の実施の形態に係るメモリシステムにおいて、メモリ２のデータをメモリ２内の他のアドレスにコピーする動作を説明する。
【０１６１】
本発明の実施の形態に係るメモリシステムでは、プロセッサ１は、上述したＬ２キャッシュ３の機能を用いて、メモリ２のデータを他のアドレスにコピーできる。
【０１６２】
図１２は、本発明の実施の形態に係るメモリシステムにおける、データコピー動作の流れを示すフローチャートである。また、図１３は、メモリ２に格納されるデータの例を示す図である。
【０１６３】
以下、図１３に示すアドレス範囲７１（０ｘ００００００００〜０ｘ０００００１００）の２５６バイトのデータを、アドレス範囲７２（０ｘ８０００００００〜０ｘ８００００１００）にコピーする例を説明する。また、当該コピーにはウェイ３１ａが用いられるとする。
【０１６４】
まず、プロセッサ１は、Ｌ２キャッシュ３にウェイ３１ａをロックするように指示する（Ｓ４０１）。具体的には、プロセッサ１は、ウェイロックレジスタ１０４に「０、０、０、１」を書き込むことで、ウェイ３１ａをロックする。なお、ここでは、ウェイロックレジスタ１０４に保持される４ビットのロック状態１２４は、下位ビットから順に、ウェイ３１ａ〜３１ｄに対応するものとする。
【０１６５】
次に、プロセッサ１は、ウェイ３１ａを指定したうえで、コピー元のデータのプリフェッチをＬ２キャッシュ３に指示する（Ｓ４０２）。具体的には、プロセッサ１は、コマンドレジスタ１０１にプリフェッチコマンドを書き込み、スタートアドレスレジスタ１０２に、スタートアドレス（０ｘ００００００００）を書き込み、サイズレジスタ１０３に、サイズ（０ｘ１００）を書き込み、ウェイ指定レジスタ１０５に、「０、０、０、１」を書き込む。これにより、Ｌ２キャッシュ３は、メモリ２のアドレス範囲７１のデータをウェイ３１ａに格納する。なお、ここでは、ウェイ指定レジスタ１０５に保持される４ビットの指定状態１２５は、下位ビットから順に、ウェイ３１ａ〜３１ｄに対応するものとする。
【０１６６】
図１４は、ステップ４０２でプリフェッチが行われた後のウェイ３１ａの状態を示す図である。図１４に示すように、Ｌ２キャッシュ３は、キャッシュエントリ４０ａ及び４０ｂに、メモリ２のアドレス範囲７１に格納されていたデータＡ及びデータＢを格納する。
【０１６７】
ここで、キャッシュエントリ４０ａは、データＡが格納されているアドレス範囲７１ａのセットインデックス５２「００００」に対応し、キャッシュエントリ４０ｂは、データＢが格納されているアドレス範囲７１ｂのセットインデックス５２「０００１」に対応する。また、Ｌ２キャッシュ３は、キャッシュエントリ４０ａ及び４０ｂのタグ４１に、共に、アドレス範囲７１のタグアドレス５１であるタグＡ（０ｘ００００００）を格納する。また、Ｌ２キャッシュ３は、キャッシュエントリ４０ａ及び４０ｂのバリッドフラグ４２を共に「１」に設定し、ダーティフラグ４３を、共に「０」に設定する。
【０１６８】
次に、プロセッサ１は、Ｌ２キャッシュ３によるプリフェッチ動作が完了するのを待つ（Ｓ４０３）。具体的には、プロセッサ１は、状態レジスタ１０７に保持される実行状態１２７を確認することにより、プリフェッチ動作の完了を判定する。
【０１６９】
Ｌ２キャッシュ３によるプリフェッチ動作が完了した後、次に、プロセッサ１は、ウェイ３１ａを指定したうえで、コピー先のアドレスに対する第２タッチ動作をＬ２キャッシュ３に指示する（Ｓ４０４）。具体的には、プロセッサ１は、コマンドレジスタ１０１に第２タッチコマンドを書き込み、スタートアドレスレジスタ１０２に、スタートアドレス（０ｘ８０００００００）を書き込み、サイズレジスタ１０３に、サイズ（０ｘ１００）を書き込み、ウェイ指定レジスタ１０５に、「０、０、０、１」を書き込む。これにより、Ｌ２キャッシュ３は、ステップＳ４０２でデータが格納されたウェイ３１ａのキャッシュエントリ４０ａ及び４０ｂの、タグ４１及びダーティフラグ４３をセットする。
【０１７０】
図１５は、ステップ４０３で第２タッチが行われた後のウェイ３１ａの状態を示す図である。図１５に示すように、Ｌ２キャッシュ３は、キャッシュエントリ４０ａ及び４０ｂのタグ４１を、共に、コピー先のアドレス範囲７２のタグアドレス５１であるタグＢ（０ｘ１０００００）に更新する。また、Ｌ２キャッシュ３は、キャッシュエントリ４０ａ及び４０ｂのダーティフラグ４３を、共に「１」に設定する。
【０１７１】
このように、本発明の実施の形態に係るメモリシステムでは、ウェイ３１を指定することにより、Ｌ２キャッシュ３に格納されるコピー元のデータを指定して、タグ４１を変更できる。つまり、ウェイ３１を指定した第２タッチにより、Ｌ２キャッシュ３内で、コピー元のデータのアドレスをコピー先のデータのアドレスに変更できる。
【０１７２】
次に、プロセッサ１は、Ｌ２キャッシュ３による第２タッチ動作が完了するのを待つ（Ｓ４０５）。具体的には、プロセッサ１は、状態レジスタ１０７に保持される実行状態１２７を確認することにより、第２タッチ動作が完了したか否かを判定する。
【０１７３】
Ｌ２キャッシュ３による第２タッチ動作が完了した後、次に、プロセッサ１は、ウェイ３１ａのロックを解除する（Ｓ４０６）。具体的には、プロセッサ１は、ウェイロックレジスタ１０４に「０、０、０、０」を書き込むことで、ウェイ３１ａのロックを解除する。
【０１７４】
次に、プロセッサ１は、ライトバック動作をＬ２キャッシュ３に指示する（Ｓ４０７）。具体的には、プロセッサ１は、コマンドレジスタ１０１にライトバックコマンドを書き込む。これにより、Ｌ２キャッシュ３は、ステップＳ４０４で更新されたタグＢに対応するアドレス範囲７１に、データＡ及びデータＢを書き込む。具体的には、Ｌ２キャッシュ３は、ダーティフラグ４３が「１」のキャッシュエントリ４０に含まれるラインデータ４４をメモリ２に書き込む。ここで、本発明の実施の形態では、第２タッチ動作（Ｓ４０４）により、タグ４１の更新と同時に、ダーティフラグ４３が「１」に設定される。よって、第２タッチ動作（Ｓ４０４）の後に、ライトバックを行うことで、更新されたタグ４１に対応するアドレス範囲７２に、データがコピーされる。
【０１７５】
図１６は、ライトバック動作（Ｓ４０７）後の、メモリ２に格納されるデータを示す図である。図１６に示すように、図１２に示す処理により、アドレス範囲７１（７１ａ及び７１ｂ）に格納されていたデータＡ及びデータＢが、アドレス範囲７２（７２ａ及び７２ｂ）にコピーされる。
【０１７６】
以上のように、ステップＳ４０４で、プロセッサ１は、Ｌ２キャッシュ３にウェイ３１ａを指定した第２タッチコマンドを指示することにより、Ｌ２キャッシュ３内に格納されている所望のキャッシュエントリ４０のタグ４１を変更できる。
【０１７７】
ここで、上述した例に示したように、コピー元のアドレス範囲７１と、コピー先のアドレス範囲７２とは、同一のセットインデックス５２を有する必要がある。なぜなら、セット・アソシエイティブ方式のキャッシュメモリにおいては、ウェイ３１内のどのキャッシュエントリ４０が用いられるかは、セットインデックス５２により決定される。つまり、Ｌ２キャッシュ３に含まれる複数のキャッシュエントリ４０のうちいずれかを、一意に選択するためには、ウェイ３１及びセットインデックス５２を指定する必要がある。
【０１７８】
よって、プロセッサ１は、指定状態１２５によりウェイ３１を指定するとともに、コピー元のアドレス範囲７１と、コピー先のアドレス範囲７２とを同一のセットインデックス５２を有するアドレス範囲に指定することにより、Ｌ２キャッシュ３に格納されるコピー元のアドレス範囲７１のデータが格納されているキャッシュエントリ４０ａ及び４０ｂを指定したうえでタッチ動作（タグ４１の更新）を行うことができる。
【０１７９】
これにより、本発明の実施の形態では、タッチを用いて、高速にデータコピーを行うことができる。
【０１８０】
さらに、第２タッチでは、タグ４１の更新と同時に、ダーティフラグ４３を「１」に更新する。これにより、第２タッチを実行した後に、ライトバックを行うことで、タグ４１が変更されたキャッシュエントリのデータがライトバックされる。つまり、変更前のタグアドレスに対応するアドレス領域のデータが、変更後のタグアドレスに対応するアドレス領域にコピーされる。
【０１８１】
一方で、従来のキャッシュメモリを用いたメモリシステムでは、同様のコピー動作を行うためには、例えば、プロセッサ１は、キャッシュメモリにコピー元のデータをプリフェッチさせ、次に、プリフェッチされたコピー元のデータをキャッシュメモリから読み出し、キャッシュメモリにコピー先のアドレスを第１タッチ（タグ４１のみを変更）させ、次に、読み出したコピー元のデータをコピー先のアドレスを指定してキャッシュメモリに書き込み、次に、キャッシュメモリにライトバックを指示する必要がある。
【０１８２】
このように、Ｌ２キャッシュ３を用いることで、プロセッサ１は、上記読み出し及び書き込み動作を省略できる。さらに、従来のコピー方法では、１２８バイトのデータをコピーする場合、二つのキャッシュエントリ４０を使用する必要があるのに対して、本発明に係るコピー方法は、一つのキャッシュエントリ４０のみを使用して実現できる。これにより、Ｌ２キャッシュ３におけるライン入れ替え処理の発生回数を削減できる。このように、本発明の実施の形態に係るＬ２キャッシュ３を用いることで、プロセッサ１は、メモリ２のデータを他のアドレスに高速にコピーできる。
【０１８３】
さらに、本発明の実施の形態に係るメモリシステムでは、ステップＳ４０１でデータコピー動作に用いるウェイ３１ａをロックする。これにより、当該データコピー動作中に、データコピー動作に用いるウェイ３１ａのデータが、通常のキャッシュ動作又は他のコマンドにより削除又は更新されることを防止できる。
【０１８４】
さらに、本発明の実施の形態に係るメモリシステムでは、ステップＳ４０２でのウェイ３１ａを指定したプリフェッチにより、コピー元のデータをＬ２キャッシュ３に格納する。これにより、プロセッサ１は、コピー元のデータが格納されるウェイ３１ａを把握できるので、当該ウェイ３１ａを指定して、第２タッチコマンドをＬ２キャッシュ３に指示できる。
【０１８５】
なお、ウェイ３１ａを指定してプリフェッチを行わず、通常のプリフェッチ、又は既に格納されているデータに対して、ウェイ３１のロック（Ｓ４０１）を行った後に、ステップＳ４０４以降の処理を行ってもよい。
【０１８６】
また、図１２では、ウェイロック解除（Ｓ４０６）を行った後に、ライトバック（Ｓ４０７）を行うとしたが、ウェイ３１ａを指定してライトバックを行ってもよい。
【０１８７】
図１７は、本発明の実施の形態に係るメモリシステムにおける、データコピー動作の流れの変形例を示すフローチャートである。
【０１８８】
図１７に示すように、Ｌ２キャッシュ３による第２タッチ動作が完了した後（Ｓ４０５の後）、次に、プロセッサ１は、ウェイ３１ａを指定したライトバック動作をＬ２キャッシュ３に指示する（Ｓ４１１）。具体的には、プロセッサ１は、コマンドレジスタ１０１にライトバックコマンドを書き込み、ウェイ指定レジスタ１０５に、「０、０、０、１」を書き込む。これにより、Ｌ２キャッシュ３は、ステップＳ４０４で更新されたタグＢに対応するアドレス範囲７１に、データＡ及びデータＢを書き込む。具体的には、Ｌ２キャッシュ３は、ウェイ３１ａに含まれる、ダーティフラグ４３が「１」のキャッシュエントリ４０に含まれるラインデータ４４をメモリ２に書き込む。
【０１８９】
次に、プロセッサ１は、ウェイ３１ａのロックを解除する（Ｓ４１２）。
【０１９０】
このような図１７に示す処理でも、図１２に示す処理と同様に、アドレス範囲７１に格納されていたデータＡ及びデータＢを、アドレス範囲７２にコピーできる。さらに、ウェイ３１ａのみを指定してライトバックが行われるので、全てのウェイ３１に対してライトバックを行う場合に比べて、処理時間を短縮できる。
【０１９１】
また、図１２に示すステップＳ４０７において、ウェイ３１ａを指定してライトバックを行ってもよい。
【０１９２】
また、図１２に示すステップＳ４０７では、プロセッサ１により書き込まれたライトバックコマンドに基づき、Ｌ２キャッシュ３がライトバックを行うとしたが、プロセッサ１からのコマンドではなく、通常のキャッシュ動作時に行われるライトバック、又はコマンド（プリフェッチコマンド又は第１〜第３タッチ）実行時に行われるライトバックによりキャッシュエントリ４０ａ及び４０ｂのデータをメモリ２に書き込んでもよい。
【０１９３】
次に、本発明の実施の形態に係るメモリシステムにおいて、メモリ２の指定したアドレス範囲のデータを「０」に書き換える動作（以下、ゼロ書き込み動作）を説明する。
【０１９４】
本発明の実施の形態に係るメモリシステムでは、プロセッサ１は、上述したＬ２キャッシュ３の機能を用いて、メモリ２の指定したアドレス範囲のデータを「０」に書き換えることができる。
【０１９５】
図１８は、本発明の実施の形態に係るメモリシステムにおける、ゼロ書き込み動作の流れを示すフローチャートである。
【０１９６】
以下、図１３に示すアドレス範囲７１（０ｘ００００００００〜０ｘ０００００１００）の２５６バイトのデータを、全て「０」に書き換える例を説明する。
【０１９７】
まず、プロセッサ１は、第３タッチ動作をＬ２キャッシュ３に指示する（Ｓ５０１）。具体的には、プロセッサ１は、コマンドレジスタ１０１に第３タッチコマンドを書き込み、スタートアドレスレジスタ１０２に、スタートアドレス（０ｘ００００００００）を書き込み、サイズレジスタ１０３に、サイズ（０ｘ１００）を書き込む。これにより、Ｌ２キャッシュ３は、アドレス範囲７１に対応するアドレスをタッチしたうえで、ダーティフラグ４３を更新し、さらに、ラインデータ４４を全て「０」に更新する。なお、ここでは、第３タッチに用いられるウェイ３１としてウェイ３１ａが選択されたとする。
【０１９８】
図１９は、ステップ５０１で第３タッチが行われた後のウェイ３１ａの状態を示す図である。図１９に示すように、Ｌ２キャッシュ３は、キャッシュエントリ４０ａ及び４０ｂのタグ４１を、共に、アドレス範囲７１のタグアドレス５１であるタグＡ（０ｘ００００００）に更新する。また、Ｌ２キャッシュ３は、キャッシュエントリ４０ａ及び４０ｂのダーティフラグ４３を共に「１」に設定し、ラインデータ４４を共に全ての「０」のデータに書き換える。
【０１９９】
次に、プロセッサ１は、Ｌ２キャッシュ３による第３タッチ動作が完了するのを待つ（Ｓ５０２）。具体的には、プロセッサ１は、状態レジスタ１０７に保持される実行状態１２７を確認することにより、第３タッチ動作が完了したか否かを判定する。
【０２００】
Ｌ２キャッシュ３による第３タッチ動作が完了した後、次に、プロセッサ１は、ライトバック動作をＬ２キャッシュ３に指示する（Ｓ５０３）。具体的には、プロセッサ１は、コマンドレジスタ１０１にライトバックコマンドを書き込む。これにより、Ｌ２キャッシュ３は、ステップＳ５０１で更新されたタグＡに対応するアドレス範囲７１に、全て「０」のデータを書き込む。具体的には、Ｌ２キャッシュ３は、ダーティフラグ４３が「１」のキャッシュエントリ４０に含まれるラインデータ４４をメモリ２に書き込む。ここで、本発明の実施の形態では、第３タッチ動作（Ｓ５０１）により、タグ４１の更新と同時に、ダーティフラグ４３が「１」に設定される。よって、第３タッチ動作（Ｓ５０１）の後に、ライトバックを行うことで、設定されたタグ４１に対応するアドレス範囲７１に、全て「０」のデータが書き込まれる。
【０２０１】
図２０は、ライトバック動作（Ｓ５０３）後の、メモリ２に格納されるデータを示す図である。図２０に示すように、図１８に示す処理により、アドレス範囲７１のデータが全て「０」に書き換えられる。
【０２０２】
以上より、本発明の実施の形態に係るＬ２キャッシュ３は、第３タッチにより、タグ４１と、ダーティフラグ４３と、ラインデータ４４とを同時に更新する。これにより、第３タッチを実行した後に、ライトバックを行うことで、更新されたラインデータ４４が更新されたタグ４１に対応するアドレス範囲７１に書き込まれる。
【０２０３】
一方、従来のキャッシュメモリを用いたメモリシステムでは、同様の書き込み動作を行うためには、例えば、プロセッサ１が、キャッシュメモリに書き込み先のアドレスを第１タッチ（タグ４１のみを変更）させ、次に、全て「０」のデータを書き込み先のアドレスを指定してキャッシュメモリに書き込み、次に、キャッシュメモリにライトバックを指示する必要がある。
【０２０４】
このように、Ｌ２キャッシュ３を用いることで、プロセッサ１は、書き込み動作を省略できる。よって、本発明に係るＬ２キャッシュ３を用いることで、プロセッサ１は、メモリ２のデータを全て「０」のデータに高速に書き換えることができる。
【０２０５】
なお、上記説明では、第３タッチ動作時にＬ２キャッシュ３は、ラインデータ４４を全て「０」のデータに更新するとしたが、ラインデータ４４を全て「１」のデータに更新してもよい。言い換えると、Ｌ２キャッシュ３は、第３タッチ動作時、ラインデータ４４を予め定められた全てのビットが同一のデータに更新してもよい。さらに、Ｌ２キャッシュ３は、第３タッチ動作時、ラインデータ４４を、データ「０」及び「１」が混在する予め定められたデータに更新してもよい。
【０２０６】
また、ステップＳ５０１において、ウェイ３１を指定して第３タッチを行ってもよい。さらに、ステップＳ５０３において、第３タッチに用いたウェイ３１を指定してライトバックを行ってもよい。さらに、ウェイ３１を指定して第３タッチを行う場合には、当該ウェイ３１をロックした後に、ロックしたウェイ３１を用いて第３タッチ（Ｓ５０１）を行ってもよい。
【０２０７】
以上、本発明の実施の形態に係るキャッシュメモリについて説明したが、本発明は、この実施の形態に限定されるものではない。
【０２０８】
例えば、上記説明では、Ｌ２キャッシュ３に本発明に係るキャッシュメモリを適用した例について述べたが、Ｌ１キャッシュ４に本発明に係るキャッシュメモリを適用してもよい。
【０２０９】
ここで、Ｌ２キャッシュ３を用いた上記コピー動作、又は上記書き込み動作を行う場合、Ｌ２キャッシュ３内の一部の格納領域が、当該コピー動作、又は当該書き込み動作に用いられる。よって、通常のキャッシュ動作等の処理能力が一時的に低下する可能性がある。ここで、レベル２キャッシュは、レベル１キャッシュに比べて、処理能力の低下がメモリシステム全体に与える影響が少ない。具体的には、Ｌ１キャッシュ４に本発明に係るキャッシュメモリを適用した場合には、プロセッサ１からのＬ１キャッシュ４がヒット時のアクセスが妨げられることになる。一方、Ｌ２キャッシュ３に本発明のキャッシュメモリを適用することで、上記ヒット時のアクセスの妨げを低減できる。つまり、本発明に係るキャッシュメモリをレベル２キャッシュに適用することで、メモリシステム全体への悪影響を低減できる。
【０２１０】
また、上記説明では、Ｌ２キャッシュ３及びＬ１キャッシュ４を備えるメモリシステムを例に説明したが、Ｌ１キャッシュ４のみを備えるメモリシステムに本発明を適用してもよい。
【０２１１】
また、レベル３キャッシュ以上を備えるメモリシステムに本発明を適用してもよい。この場合、上述した理由により最大レベルのキャッシュに本発明のキャッシュメモリを適用することが好ましい。
【０２１２】
また、上記説明では、アドレスレジスタ１００は、スタートアドレス１２２と、サイズ１２３とを保持するとしたが、サイズ１２３の代わりに、コマンド対象のアドレス範囲の最後のアドレスであるエンドアドレスを保持してもよい。言い換えると、アドレスレジスタ１００は、サイズレジスタ１０３の代わりに、プロセッサ１からエンドアドレスが指定されるエンドアドレスレジスタを備えてもよい。
【０２１３】
また、アドレスレジスタ１００は、アドレス範囲ではなく、指定されたアドレスを保持してもよい。ここで指定されたアドレスとは、メモリ２上のアドレスであってもよいし、メモリ２上のアドレスの一部（例えば、タグアドレス５１とセットインデックス５２、又はタグアドレスのみ）であってもよい。
【０２１４】
また、上記説明では、ラインの入れ替え先を決定するアルゴリズムとして、ＬＲＵ方式を用いる例を述べたが、ラウンドロビン方式及びランダム方式等、他のアルゴリズムを用いてもよい。
【０２１５】
また、上記説明では、ウェイ３１をロックする機能として、プロセッサ１がウェイロックレジスタ１０４に保持されるロック状態１２４を書き換えるとしたが、ウェイロックコマンドを設けてもよい。つまり、プロセッサ１がコマンドレジスタ１０１にウェイロックコマンドを書き込んだ場合に、禁止部１１４がロック状態１２４を更新してもよい。なお、ウェイロックコマンドを用いる場合、禁止部１１４は、予め定められたウェイ３１をロックしてもよいし、ロックコマンドにウェイ３１を指定する情報が含まれてもよい。
【０２１６】
また、上記説明では、プリフェッチ動作及び第１〜第３タッチ動作において、Ｌ２キャッシュ３は、ウェイ指定レジスタ１０５に保持される指定状態１２５に含まれる４ビットのうちいずれか１個以上が、「１」の場合に、ウェイ３１を指定して、プリフェッチ動作、第１〜第３タッチ動作及びライトバック動作を行うとしたが、通常のプリフェッチコマンド、通常の第１〜第３タッチコマンド、及び通常のライトバックコマンドと、ウェイ指定のプリフェッチコマンド、ウェイ指定の第１〜第３タッチコマンド、及びウェイ指定のライトバックコマンドとを個別に設けてもよい。具体的には、Ｌ２キャッシュ３は、コマンドレジスタ１０１にウェイ指定のコマンドが書き込まれた場合にのみ、指定状態１２５で示される指定されたウェイ３１を用いて処理を行い、コマンドレジスタ１０１に通常のコマンドが書き込まれた場合は、指定状態１２５と無関係に、処理に用いるウェイ３１を選択すればよい。
【０２１７】
また、上記説明では、指定状態１２５により、ウェイ３１単位で指定を行っているが、ウェイに含まれる１個以上のキャッシュエントリ４０単位で指定を行ってもよい。つまり、上記コピー動作時には、コピー元のデータが格納されているエントリを指定して、第２タッチを行ってもよい。
【０２１８】
また、上記説明では、ロック状態１２４により、ウェイ３１単位でロックを行っているが、ウェイに含まれる１個以上のキャッシュエントリ４０単位でロックを行ってもよい。
【０２１９】
また、上記説明では、Ｌ２キャッシュ３は、ロック状態１２４を保持するウェイロックレジスタ１０４を備えるとしたが、複数のキャッシュエントリ４０のそれぞれが、バリッドフラグ４２及びダーティフラグ４３と同様のロックフラグを含み、制御部３８は、当該ロックフラグを確認することにより、当該エントリがロックされているか否かを判定してもよい。
【０２２０】
また、上記説明では、ロックされたウェイ３１は、通常のキャッシュ動作、及び通常のコマンド動作時には、用いられないとしたが、リプレースが発生しない場合には、ロックされたウェイ３１を動作に用いてもよい。具体的には、通常のキャッシュ動作におけるリードヒット時の動作等に用いてもよい。
【０２２１】
また、上記説明は、Ｌ２キャッシュ３が４ウェイ・セット・アソシエイティブ方式のキャッシュメモリの場合を例に説明したが、ウェイ３１の数は４個以外でもよい。
【０２２２】
さらに、フルアソシエイティブ方式のキャッシュメモリに本発明を適用してもよい。つまり、複数のウェイ３１のそれぞれが１個のキャッシュエントリ４０のみを含んでもよい。この場合、ウェイ３１を指定するだけで、Ｌ２キャッシュ３に含まれる所望のキャッシュエントリ４０を一意に選択できる。よって、上述した、データコピー動作におけるコピー先のアドレス範囲７２の制限（セットインデックス５２を同一にする制限）はなく、所望のアドレス範囲にデータを高速にコピーできる。
【産業上の利用可能性】
【０２２３】
本発明は、キャッシュメモリ及びキャッシュメモリを備えるメモリシステムに適用できる。
【符号の説明】
【０２２４】
１  プロセッサ
２  メモリ
３  Ｌ２キャッシュ
４  Ｌ１キャッシュ
２０  アドレスレジスタ
２１  メモリＩ／Ｆ
３０  デコーダ
３１、３１ａ、３１ｂ、３１ｃ、３１ｄ  ウェイ
３２ａ、３２ｂ、３２ｃ、３２ｄ  比較器
３３ａ、３３ｂ、３３ｃ、３３ｄ  アンド回路
３４  オア回路
３５、３６  セレクタ
３７  デマルチプレクサ
３８  制御部
３９  コマンド処理部
４０、４０ａ、４０ｂ  キャッシュエントリ
４１  タグ
４２  バリッドフラグ
４３  ダーティフラグ
４４  ラインデータ
５１  タグアドレス
５２  セットインデックス
５３  ワードインデックス
６１  転送命令
６２  ソースオペランド
６３  デスティネーションオペランド
６４  コマンド内容
７１、７１ａ、７１ｂ、７２、７２ａ、７２ｂ  アドレス範囲
１００  アドレスレジスタ
１０１  コマンドレジスタ
１０２  スタートアドレスレジスタ
１０３  サイズレジスタ
１０４  ウェイロックレジスタ
１０５  ウェイ指定レジスタ
１０６  コマンド実行部
１０７  状態レジスタ
１１１  プリフェッチ部
１１２ａ  第１タッチ部
１１２ｂ  第２タッチ部
１１２ｃ  第３タッチ部
１１３  ライトバック部
１１４  禁止部
１２１  コマンド
１２２  スタートアドレス
１２３  サイズ
１２４  ロック状態
１２５  指定状態
１２７  実行状態
【図１】
0005536655.tif 000002
【図２】
0005536655.tif 000003
【図３】
0005536655.tif 000004
【図４】
0005536655.tif 000005
【図５】
0005536655.tif 000006
【図６】
0005536655.tif 000007
【図７】
0005536655.tif 000008
【図８】
0005536655.tif 000009
【図９】
0005536655.tif 000010
【図１０】
0005536655.tif 000011
【図１１】
0005536655.tif 000012
【図１２】
0005536655.tif 000013
【図１３】
0005536655.tif 000014
【図１４】
0005536655.tif 000015
【図１５】
0005536655.tif 000016
【図１６】
0005536655.tif 000017
【図１７】
0005536655.tif 000018
【図１８】
0005536655.tif 000019
【図１９】
0005536655.tif 000020
【図２０】
0005536655.tif 000021