(57)【要約】【課題】ＣＰＵからの１回の要求により指定した領域内のデータブロックのみをインバリデート処理、コピーバック処理することができ、インバリデートやコピーバックに要する処理時間を削減し、使用効率を高めることができるキャッシュメモリ制御装置を得る。【解決手段】メモリアクセス制御部１が、タグメモリ２の先頭アドレス（０）から最終アドレス（Ｎ）までをタグメモリ２に入力し、それぞれに対応して出力されるタグアドレスと、インデックスアドレスとをインバリデート・コピーバック判定部４１がつなぎ合わせて１つのアドレスを生成し、領域指定レジスタ４０により指定される領域の範囲内であるか否かを判定し、領域の範囲内である場合のみインバリデート処理、コピーバック処理を行う。【選択図】　　　　図１
2004102825.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュデータを記憶するデータメモリと、
前記データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と、前記各データブロックが有効か否かを示すバリッド情報を記憶するタグメモリと、
キャッシング無効化処理が必要になった場合に、メインメモリ内のキャッシング無効化処理の対象領域に関する情報を指定する領域指定部と、
前記タグメモリの全領域にわたって前記タグメモリから順次読み出された前記アドレス情報と前記領域指定部に指定された情報に基づいて、前記メインメモリ内の前記キャッシング無効化処理の対象領域に対応するデータブロックが前記データメモリに記憶されているか否かを判定する判定部と、
前記判定部の判定が肯定的な場合に、前記キャッシング無効化処理の対象領域に対応するデータブロックに関するバリッド情報を前記データブロックが無効であることを示すように書き換える制御部とを備えたキャッシュメモリ制御装置。
【請求項２】
キャッシュデータを記憶するデータメモリと、
前記データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と、前記各データブロックについてメインメモリへの書き戻しが必要か否かを示すダーティ情報を記憶するタグメモリと、
メインメモリへの書き戻し処理が必要になった場合に、メインメモリ内の書き戻し処理の対象領域に関する情報を指定する領域指定部と、
前記タグメモリの全領域にわたって前記タグメモリから順次読み出された前記アドレス情報と前記領域指定部に指定された情報に基づいて、前記メインメモリ内の前記書き戻し処理の対象領域に対応するデータブロックが前記データメモリに記憶されているか否かを判定する判定部と、
前記判定部の判定が肯定的な場合に、前記書き戻し処理の対象領域に対応するデータブロックを前記メインメモリに書き戻す書き戻し部とを備えたキャッシュメモリ制御装置。
【請求項３】
キャッシュデータを記憶するデータメモリと、
前記データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と、前記各データブロックが有効か否かを示すバリッド情報と、前記各データブロックについてメインメモリへの書き戻しが必要か否かを示すダーティ情報を記憶するタグメモリと、
キャッシング無効化処理またはメインメモリへの書き戻し処理が必要になった場合に、メインメモリ内のキャッシング無効化処理または書き戻し処理の対象領域に関する情報を指定する領域指定部と、
前記タグメモリの全領域にわたって前記タグメモリから順次読み出された前記アドレス情報と前記領域指定部に指定された情報に基づいて、前記メインメモリ内の前記キャッシング無効化処理または前記書き戻し処理の対象領域に対応するデータブロックが前記データメモリに記憶されているか否かを判定する判定部と、
前記キャッシング無効化処理が必要であって前記判定部の判定が肯定的な場合に、前記キャッシング無効化処理の対象領域に対応するデータブロックに関するバリッド情報を前記データブロックが無効であることを示すように書き換える制御部と、
前記書き戻し処理が必要であって前記判定部の判定が肯定的な場合に、前記書き戻し処理の対象領域に対応するデータブロックを前記メインメモリに書き戻す書き戻し部とを備えたキャッシュメモリ制御装置。
【請求項４】
キャッシュメモリにアクセスしないバスマスタがメインメモリにデータを書き込む前に、前記キャッシュメモリをキャッシュデータの置換処理不可能にロックするロック部と、
前記ロック部が前記キャッシュメモリをロックした後に、キャッシング無効化処理およびメインメモリへの書き戻し処理を前記キャッシュメモリに実行させる処理指令部とを備えており、
前記バスマスタが前記メインメモリ内のデータを書き込む領域を少なくとも含む領域に関する情報をキャッシング無効化処理および書き戻し処理の対象領域に関する情報として領域指定部が指定することを特徴とする請求項３記載のキャッシュメモリ制御装置。
【請求項５】
キャッシュメモリにアクセスしないバスマスタが、ロック部、処理指令部および領域指定部を備えることを特徴とする請求項４記載のキャッシュメモリ制御装置。
【請求項６】
キャッシュメモリにアクセスしないバスマスタがメインメモリからデータを読み出す前に、メインメモリへの書き戻し処理を前記キャッシュメモリに実行させる処理指令部を備えており、
前記バスマスタが前記メインメモリ内のデータを読み出す領域を少なくとも含む領域に関する情報を書き戻し処理の対象領域に関する情報として領域指定部が指定することを特徴とする請求項３記載のキャッシュメモリ制御装置。
【請求項７】
キャッシュメモリにアクセスしないバスマスタが、処理指令部および領域指定部を備えることを特徴とする請求項６記載のキャッシュメモリ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、指定されたアドレス領域内のデータブロックのみに対してインバリデート処理またはコピーバック処理を行うことが可能なキャッシュメモリ制御装置に関するものである。
【０００２】
【従来の技術】
ＣＰＵ（中央演算処理装置）を内蔵したＬＳＩ（大規模集積回路）等で用いられるキャッシュメモリでは、キャッシュアクセスを行わないＤＭＡ（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ）コントローラ等のバスマスタがメインメモリにアクセスする際などにメインメモリとキャッシュメモリのコヒーレンシ（同一性）を保つため、キャッシュメモリのデータブロックを無効にする処理（インバリデート処理）や、書き戻しをする処理（コピーバック処理）がソフトウエアにより行われる。ここで、コピーバック処理とはＣＰＵからのキャッシュメモリへの書き込みによりキャッシュメモリとメインメモリの内容が異なった場合に、キャッシュメモリの内容をメインメモリに書き戻す処理である。
【０００３】
図８は従来のキャッシュメモリのブロック図である。図において、１はキャッシュメモリへのアクセス信号等を制御するメモリアクセス制御部、２はキャッシュメモリにキャッシングされているデータブロックを特定するタグ情報が格納されるタグメモリ、３はキャッシングされるデータブロックが格納されるデータメモリを示す。１０，１１，１２，１３はメモリアクセス制御部１からタグメモリ２への入力を示し、それぞれ、タグメモリ２へのアクセスを制御するメモリイネーブル信号、タグメモリ２への書き込みを制御するライトイネーブル信号、インバリデート処理またはコピーバック処理が必要な領域のアドレス入力、タグメモリ２に書き込むためのデータ入力である。同様に、１５，１６，１７，１８はメモリアクセス制御部１からデータメモリ３に入力される信号等を示し、それぞれ、メモリイネーブル信号、ライトイネーブル信号、アドレス入力、データ入力である。また、１４はタグメモリ２からのデータ出力、１９はデータメモリ３からのデータ出力を示す。ＣＰＵ（図示せず）からのアクセスに関する回路は、図示を省略している。
【０００４】
タグメモリ２に格納されたタグ情報では、データメモリ３内のデータブロックに対応するメインメモリ（図示せず）内のアドレスの一部が指定されていると共に、各データブロックのキャッシングが有効か否かがバリッドビットで示されるようになっている。
またタグ情報では、データメモリ３内の各データブロックについてメインメモリへの書き戻しが必要か否かを示すダーティビットが示されるようになっている。メインメモリへの書き戻しが必要であるタグ情報（ダーティビット）が示すデータブロックは、メインメモリへ書き戻すことができる。
【０００５】
次にインバリデート処理を行う動作について説明する。
図９は図８のキャッシュメモリの全領域にインバリデート処理を行うときのタイミングチャートである。図において、３０はクロック信号、３１はＣＰＵからキャッシュメモリに出力されるインバリデート処理要求信号を示す。メモリアクセス制御部１からのメモリイネーブル信号１０がハイレベルでライトイネーブル信号１１がハイレベルの時、タグメモリに対してライトアクセスが行われ、メモリイネーブル信号１０がハイレベルでライトイネーブル信号１１がローレベルの時、タグメモリにリードアクセスが行われる。
【０００６】
図示しないＣＰＵはキャッシングのインバリデート処理が必要であることを認識すると、実行しているソフトウエアに従って、メモリアクセス制御部１にハイレベルのインバリデート処理要求信号３１を供給する。
【０００７】
インバリデート処理要求信号３１を受けると、メモリアクセス制御部１はまず、メモリイネーブル信号１０、ライトイネーブル信号１１をハイレベルにし、タグメモリ２の先頭アドレス（０）をアドレス入力１２としてタグメモリ２に入力する。メモリアクセス制御部１はデータ入力１３を用いて該当アドレスに対応する領域にバリッドビット＝０を書き込む。バリッドビットとはデータブロックのキャッシングが有効か否かを示すものであり、バリッドビットが１であればキャッシュメモリ上の該当データブロックは有効であるが、バリッドビットが０であればキャッシュメモリ上の該当データブロックは無効である。
【０００８】
その後、メモリアクセス制御部１は、アドレス入力１２をインクリメントし、タグメモリ２内の次のアドレスについて同じ処理を行う。タグメモリ２中の先頭アドレス（０）から最終アドレス（Ｎ）まで上記処理が行われると、インバリデート処理終了となる。
【０００９】
次にコピーバック処理を行う動作について説明する。
図１０は図８のキャッシュメモリ全領域をコピーバック処理するときのタイミングチャートである。図において、３２はＣＰＵからキャッシュメモリに出力されるコピーバック処理要求信号、３３はメインメモリへの書き戻し開始時にハイレベルとなり、書き戻し終了時にローレベルとなるビジー信号を示す。ビジー信号３３は、メインメモリへの書き戻しの間、メモリアクセス制御部１によるリードアクセスを一時停止するために、ＣＰＵからメモリアクセス制御部１に供給される。３４はタグメモリ２のデータ出力１４中のダーティビットを示す。ダーティビットとはＣＰＵからキャッシュメモリへの書き込みにより、キャッシュメモリとメインメモリの内容が異なりメインメモリへの書き戻しが必要となることを示すものである。
【００１０】
ＣＰＵはコピーバック処理が必要であることを認識すると、実行しているソフトウエアに従って、メモリアクセス制御部１にハイレベルのコピーバック処理要求信号を供給する。コピーバック処理要求信号を受けると、メモリアクセス制御部１はまず、メモリイネーブル信号１０，１５をハイレベルにし、タグメモリ２およびデータメモリ３の先頭アドレス（０）をアドレス入力１２，１７としてタグメモリ２とデータメモリ３に入力する。タグメモリ２からはアドレス入力１２に対応するアドレスの領域に格納されたバリッドビットおよびダーティビット３４がデータ出力１４として出力され、データメモリ３からはアドレス入力１７に対応するアドレスの領域に格納されたデータブロックの内容がデータ出力１９として出力される。バリッドビットおよびダーティビットが１であればデータメモリ３からメインメモリへの書き戻しが必要であるが、バリッドビットまたはダーティビットが０であれば書き戻しは不要である。
【００１１】
タグメモリ２からのデータ出力１４のうちバリッドビット＝０またはダーティビット＝０の場合には、メモリアクセス制御部１はアドレス入力１２，１７をインクリメントし、他の信号は変化させない。他方、タグメモリ２からのデータ出力１４のうちバリッドビット＝１（有効）かつダーティビット＝１（メインメモリへの書き戻しが必要）であれば、メモリアクセス制御部１は、ライトイネーブル信号１１を１クロックサイクルだけハイレベルにすると共に同一のアドレス入力１２，１７を１クロックサイクルだけ繰り返し、データ入力１３を用いて、該当するインデックスアドレス（アドレス入力１２）に対応するエントリにダーティビット＝０を書き込む。これは後述のように直後にコピーバックを行うので、ダーティビットを１にしておく必要がないからである。また、メモリアクセス制御部１は同時にライトイネーブル信号１６をローレベルにして、データメモリ３から読み出されるデータ出力１９を維持する。
【００１２】
また、ＣＰＵはバリッドビット＝１かつダーティビット＝１であれば、そのエントリは書き戻しが必要であると判断し、１クロックサイクル遅れて、これに対応するデータメモリ３の内容をメインメモリに書き戻す。書き戻しの間、ＣＰＵはビジー信号３３をハイレベルにし、これに応じてメモリアクセス制御部１はメモリイネーブル信号１０，１５をローレベルにする。ビジー信号３３の立ち上げの瞬間、メモリアクセス制御部１はアドレス入力１２，１７をインクリメントするが、ビジー信号３３がハイレベルの間およびその後の１クロックサイクルの間は、アドレス入力１２，１７のインクリメントを一時停止する。
【００１３】
メインメモリへの書き戻し処理が終了すると、ＣＰＵはビジー信号３３をローレベルにし、メモリアクセス制御部１はメモリイネーブル信号１０，１５を再びハイレベルにし、既にインクリメントされたアドレス入力１２，１７によって、タグメモリ２およびデータメモリ３へのリードアクセスを再開し、次のアドレスについて同じ処理を行う。タグメモリ２およびデータメモリ３が順次読み出され、最終アドレス（Ｎ）まで上記処理が行われると、コピーバック処理終了となる。
【００１４】
上記のインバリデート処理およびコピーバック処理は、キャッシュメモリ全領域に対して行う方法であるが、他にキャッシュメモリ内の指定されたエントリのみに対して行う方法や、処理が必要なアドレスに対応したキャッシュメモリ上のデータブロックに対してのみ処理を行う方法がある（例えば、特許文献１参照。）。
【００１５】
【特許文献１】
特開２００１−１３４４９０（第３−８頁、第１図、第２図）
【００１６】
【発明が解決しようとする課題】
従来のキャッシュメモリは以上のように構成されており、ＤＭＡコントローラ等のバスマスタがメインメモリの一部にアクセスするとき、インバリデート処理およびコピーバック処理がキャッシュメモリの全領域に対して行われる。よって、本来インバリデート処理が不要なデータブロックまでインバリデートしてしまうため、キャッシュミスしたデータブロックをメインメモリから取り込むキャッシュリプレースが多発し、多くのクロックサイクルすなわち処理時間を消費するという課題があった。
【００１７】
また、コピーバック処理が不要なデータブロックまでメインメモリへの書き戻しを行うため、書き戻しに多くのクロックサイクルすなわち処理時間を消費するという課題があった。
【００１８】
また、エントリ毎にソフトウエアで指定して処理を行う場合でも、指定された領域全てのデータブロックに対して処理を行うため、上記と同様の課題が生じる。さらに、キャッシュメモリのアドレス毎にソフトウエアで指定して処理を行う場合では、処理が必要なアドレスを逐次ソフトウエアで指定しなければならないため、処理領域のサイズが大きくなるほど多くの処理時間を要するという課題が生じる。
【００１９】
特許文献１には、ＣＰＵからの１回の要求によりメインメモリの必要な領域のみをインバリデート処理およびコピーバック処理する方法が開示されている。この方法は、インバリデート処理またはコピーバック処理が必要になった場合に、メインメモリ内のインバリデート処理またはコピーバック処理の対象領域をまず指定し、指定されたメインメモリの対象領域の先頭アドレスから最終アドレスまで順にアドレスをインクリメントしながら処理を行うものである。
【００２０】
しかし、メインメモリ内のインバリデート処理またはコピーバック処理の対象領域が、実際に処理可能なキャッシュメモリのサイズより非常に大きいことがある。例えば、キャッシュメモリのサイズが１ＫＢなのに、メインメモリの１ＭＢ分のアドレス領域に対応するデータブロックのインバリデート処理が必要であると想定する。このような場合、１ＭＢに相当するアドレス領域にわたってアドレスのインクリメントを行い、各アドレスに対応するデータブロックがキャッシュされているか調べて、もしキャッシュされていればそのキャッシングを無効化することが必要となる。このようにメインメモリ内の莫大な対象領域に応じた回数、キャッシュメモリにアクセスするのは、処理時間の浪費である。
【００２１】
この発明は上記のような課題を解決するためになされたもので、ＣＰＵからの１回の要求により指定した領域内のデータブロックのみをインバリデート処理、コピーバック処理することができ、インバリデートやコピーバックに要する処理時間を削減し、使用効率を高めることができるキャッシュメモリ制御装置を得ることを目的とする。
【００２２】
【課題を解決するための手段】
この発明に係るキャッシュメモリ制御装置は、キャッシュデータを記憶するデータメモリと、データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と各データブロックが有効か否かを示すバリッド情報を記憶するタグメモリと、キャッシング無効化処理が必要になった場合に、メインメモリ内のキャッシング無効化処理の対象領域に関する情報を指定する領域指定部と、タグメモリの全領域にわたってタグメモリから順次読み出されたアドレス情報と領域指定部に指定された情報に基づいて、メインメモリ内のキャッシング無効化処理の対象領域に対応するデータブロックがデータメモリに記憶されているか否かを判定する判定部と、判定部の判定が肯定的な場合に、キャッシング無効化処理の対象領域に対応するデータブロックに関するバリッド情報をデータブロックが無効であることを示すように書き換える制御部とを備えたものである。
【００２３】
この発明に係るキャッシュメモリ制御装置は、キャッシュデータを記憶するデータメモリと、データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と各データブロックについてメインメモリへの書き戻しが必要か否かを示すダーティ情報を記憶するタグメモリと、メインメモリへの書き戻し処理が必要になった場合に、メインメモリ内の書き戻し処理の対象領域に関する情報を指定する領域指定部と、タグメモリの全領域にわたってタグメモリから順次読み出されたアドレス情報と領域指定部に指定された情報に基づいて、メインメモリ内の書き戻し処理の対象領域に対応するデータブロックがデータメモリに記憶されているか否かを判定する判定部と、判定部の判定が肯定的な場合に、書き戻し処理の対象領域に対応するデータブロックをメインメモリに書き戻す書き戻し部とを備えたものである。
【００２４】
この発明に係るキャッシュメモリ制御装置は、キャッシュデータを記憶するデータメモリと、データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と各データブロックが有効か否かを示すバリッド情報と各データブロックについてメインメモリへの書き戻しが必要か否かを示すダーティ情報を記憶するタグメモリと、キャッシング無効化処理またはメインメモリへの書き戻し処理が必要になった場合に、メインメモリ内のキャッシング無効化処理または書き戻し処理の対象領域に関する情報を指定する領域指定部と、タグメモリの全領域にわたってタグメモリから順次読み出されたアドレス情報と領域指定部に指定された情報に基づいて、メインメモリ内のキャッシング無効化処理または書き戻し処理の対象領域に対応するデータブロックがデータメモリに記憶されているか否かを判定する判定部と、キャッシング無効化処理が必要であって判定部の判定が肯定的な場合に、キャッシング無効化処理の対象領域に対応するデータブロックに関するバリッド情報をデータブロックが無効であることを示すように書き換える制御部と、書き戻し処理が必要であって判定部の判定が肯定的な場合に、書き戻し処理の対象領域に対応するデータブロックをメインメモリに書き戻す書き戻し部とを備えたものである。
【００２５】
この発明に係るキャッシュメモリ制御装置は、キャッシュメモリにアクセスしないバスマスタがメインメモリにデータを書き込む前に、キャッシュメモリをキャッシュデータの置換処理不可能にロックするロック部と、ロック部がキャッシュメモリをロックした後に、キャッシング無効化処理およびメインメモリへの書き戻し処理をキャッシュメモリに実行させる処理指令部とを備えており、バスマスタがメインメモリ内のデータを書き込む領域を少なくとも含む領域に関する情報をキャッシング無効化処理および書き戻し処理の対象領域に関する情報として領域指定部が指定するものである。
【００２６】
この発明に係るキャッシュメモリ制御装置は、キャッシュメモリにアクセスしないバスマスタが、ロック部、処理指令部および領域指定部を備えたものである。
【００２７】
この発明に係るキャッシュメモリ制御装置は、キャッシュメモリにアクセスしないバスマスタがメインメモリからデータを読み出す前に、メインメモリへの書き戻し処理をキャッシュメモリに実行させる処理指令部を備えており、バスマスタがメインメモリ内のデータを読み出す領域を少なくとも含む領域に関する情報を書き戻し処理の対象領域に関する情報として領域指定部が指定するものである。
【００２８】
この発明に係るキャッシュメモリ制御装置は、キャッシュメモリにアクセスしないバスマスタが、処理指令部および領域指定部を備えたものである。
【００２９】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるキャッシュメモリのブロック図である。図において、１００はこのキャッシュメモリを使用するＣＰＵを示し、ＣＰＵ１００以外のブロックはキャッシュメモリの構成要素を示す。
【００３０】
１はキャッシュメモリへのアクセス信号等を制御するメモリアクセス制御部（制御部）、２はキャッシュメモリにキャッシングされているデータブロックを特定するタグ情報が格納されるタグメモリ、３はキャッシングされるデータブロックが格納されるデータメモリを示す。１０，１１，１２，１３はメモリアクセス制御部１からタグメモリ２への入力を示し、それぞれ、タグメモリへのアクセスを制御するメモリイネーブル信号、タグメモリへの書き込みを制御するライトイネーブル信号、インバリデート処理またはコピーバック処理が必要な領域のアドレス入力、タグメモリ２に書き込むためのデータ入力である。同様に、１５，１６，１７，１８はメモリアクセス制御部１からデータメモリ３に入力される信号等を示し、それぞれ、メモリイネーブル信号、ライトイネーブル信号、アドレス入力、データ入力である。また、１４はタグメモリ２からのデータ出力、１９はデータメモリ３からのデータ出力を示す。ＣＰＵ１００からのアクセスに関する回路は、図示を省略している。
【００３１】
タグメモリ２に格納されたタグ情報では、データメモリ３内のデータブロックに対応するメインメモリ（図示せず）内のアドレスの一部が指定されていると共に、各データブロックのキャッシングが有効か否かがバリッドビットで示されるようになっている。
またタグ情報では、データメモリ３内の各データブロックについてメインメモリへの書き戻しが必要か否かを示すダーティビットが示されるようになっている。ＣＰＵ１００はタグ情報を参照し、メインメモリへの書き戻しが必要であるタグ情報（ダーティビット）が示すデータブロックをメインメモリへ書き戻すことができる。
【００３２】
４はアドレス入力１２をタグメモリ２からのデータ出力１４のタイミングに合わせるためアドレス入力１２を１クロックサイクル分遅らせて出力するＦ／Ｆ回路（フリップフロップ回路）を示す。５はキャッシングのインバリデート処理が必要になった場合に、メインメモリ内のインバリデート処理の対象となるアドレス領域を指定する情報が格納される領域指定レジスタ（領域指定部）を示す。
【００３３】
６はインバリデート判定部（判定部）を示す。インバリデート判定部６には、領域指定レジスタ５のアドレス出力２２とタグメモリ２のデータ出力１４とＦ／Ｆ回路４のアドレス出力２０とが入力され、これらに基づいてインバリデート判定部６は、キャッシュメモリ内のデータブロックがメインメモリ内のインバリデート処理の対象となるアドレス領域内にある否かを判定し、その結果を制御信号２１としてメモリアクセス制御部１に供給する。
【００３４】
領域指定レジスタ５は、メインメモリ内のインバリデート処理の対象領域の開始アドレスを格納するレジスタと、終了アドレスを格納するレジスタまたは対象領域サイズを格納するレジスタとを備える。ＣＰＵ１００はキャッシングのインバリデート処理が必要であることを認識すると、ＣＰＵ１００が実行しているソフトウエアに従って、領域指定レジスタ５に開始アドレスと、終了アドレスまたは対象領域サイズとを格納する。
【００３５】
次に、メインメモリ内の領域を示すアドレスとタグメモリ２およびデータメモリ３内の領域を示すアドレスの関係を説明する。この実施の形態では、ダイレクトマップ方式を採用する。メインメモリ内の領域を示すアドレスを上位ビット、中間ビット、下位ビットに分けて考える。上位ビットは、メインメモリのデータブロックをデータメモリ３に格納する時に、タグアドレスとしてタグメモリ２に格納される。中間ビットはタグメモリ２およびデータメモリ３内のどのアドレスにメインメモリのデータブロックを格納するかを決定することに使われるインデックスアドレスである。下位ビットはタグメモリのアクセスには使用されないビットであるため説明を省略する。
【００３６】
中間ビットに対応するタグメモリ２およびデータメモリ３内のインデックスアドレスと、そのアドレスの領域に格納されたタグアドレス（上位ビット）によって、データメモリ３内のデータブロックに対応するメインメモリ内のアドレスを推定することができる。上位、中位、下位それぞれのビット数はダイレクトマップ、セットアソシアティブ等のキャッシュ構成やキャッシュメモリの容量等によって異なる。
【００３７】
次に動作について説明する。
図２はこの実施の形態１によるキャッシュメモリをインバリデート処理するときのタイミングチャートである。図において、３０はクロック信号、３１はＣＰＵ１００からキャッシュメモリに供給されるインバリデート処理要求信号を示す。メモリアクセス制御部１からのメモリイネーブル信号１０がハイレベルでライトイネーブル信号１１がハイレベルの時、タグメモリに対してライトアクセスが行われ、メモリイネーブル信号１０がハイレベルでライトイネーブル信号１１がローレベルの時、タグメモリにリードアクセスが行われる。
【００３８】
ＣＰＵ１００はキャッシングのインバリデート処理が必要であることを認識すると、実行しているソフトウエアに従って、メモリアクセス制御部１にハイレベルのインバリデート処理要求信号３１を供給する。メモリアクセス制御部１はインバリデート処理要求信号３１に応答し、まずメモリイネーブル信号１０をハイレベルにし、タグメモリ２の先頭アドレス（０）をアドレス入力１２としてタグメモリ２に入力する。ここで入力するアドレスは、上記のインデックスアドレスにあたる。タグメモリ２からはこのインデックスアドレスの領域に格納されたタグアドレス（対応データブロックが格納されたメインメモリ内の領域を示すアドレスの上位ビット）およびバリッドビットがデータ出力１４として出力される。
【００３９】
インバリデート判定部６には、データ出力１４中のタグアドレス（上位ビット）と、Ｆ／Ｆ回路４から出力された上記インデックスアドレス（中間ビット）とが入力される。タグメモリ２ではアドレス入力１２の入力からデータ出力１４の出力までは１クロックサイクルを要するが、Ｆ／Ｆ回路４はアドレス入力１２を１クロックサイクル遅らせて出力する。従って、互いに対応するタグアドレスとインデックスアドレス（アドレス入力１２）はインバリデート判定部６に同時に供給される。インバリデート判定部６は、これらをつなぎ合わせて１つのアドレスを生成する。すなわちデータメモリ３内のデータブロックに対応するメインメモリ内のアドレスを推定する。
【００４０】
続いて、インバリデート判定部６は推定されたアドレスが領域指定レジスタ５により指定される領域の範囲内であるか否かを判定する。この第１の判定が肯定的であれば、さらにインバリデート判定部６は、データ出力１４中のバリッドビット＝１（有効）であるか否かを判定する。この第２の判定も肯定的である場合には、インバリデート判定部６は、ハイレベルの制御信号２１をメモリアクセス制御部１に供給する。
【００４１】
メモリアクセス制御部１は、ハイレベルの制御信号２１に応答して、ライトイネーブル信号１１をハイレベルにすると共に、同一のアドレス入力１２を１クロックサイクルだけ繰り返し、データ入力１３を用いて、該当するインデックスアドレス（アドレス入力１２）に対応するエントリにバリッドビット＝０を書き込み、キャッシングを無効化する。
【００４２】
続いて、メモリアクセス制御部１はインデックスアドレス（アドレス入力１２）をインクリメントして、次のインデックスアドレスをタグメモリ２に入力し、タグメモリ２内の次のインデックスアドレスについて上記と同じ処理を行う。最終インデックスアドレス（Ｎ）まで上記処理が行われると、インバリデート処理終了となる。
【００４３】
インバリデート判定部６で推定したメインメモリ内のアドレスが領域指定レジスタ５により指定される領域の範囲内にない場合には、上記の第１の判定が否定的となる。このことは、キャッシュメモリ内の該当するアドレスがキャッシングの無効化の対象ではないことを意味する。従って、インバリデート判定部６は、制御信号２１をローレベルに維持し、メモリアクセス制御部１は、そのアドレスについては書込を行うことなく、アドレス入力１２をインクリメントする。
【００４４】
インバリデート判定部６で推定したメインメモリ内のアドレスが領域指定レジスタ５により指定される領域の範囲内にある場合であっても、バリッドビットが０である場合には、キャッシュメモリ内の該当するアドレスに０を書き込む必要はない。従って、上記の第２の判定が否定的な場合にも、インバリデート判定部６は、制御信号２１をローレベルに維持し、メモリアクセス制御部は、そのアドレスについては書込を行うことなく、アドレス入力１２をインクリメントする。
【００４５】
以上のように、この実施の形態１によれば、メモリアクセス制御部１が、キャッシュメモリの全エントリのインデックスアドレスを生成してタグメモリ２に供給し、インバリデート判定部６が、タグメモリ２のデータ出力１４とインデックスアドレスに基づいてキャッシュメモリに格納されているデータブロックがインバリデート処理の対象データブロックであるか否かを判定し、対象データブロックである場合のみインバリデートするようにした。従って、ＣＰＵ１００からの１回の要求により、領域指定レジスタ５に指定したインバリデート処理が必要なアドレス領域に対応し、かつキャッシュメモリに格納されているデータブロックのみについてインバリデート処理することが可能となる。つまり、この実施の形態では、キャッシュメモリの全領域をスキャンするが、領域指定レジスタ５で指定されていないインバリデート対象ではないアドレスについてはインバリデート処理は行わない。このため、従来のキャッシュメモリの全領域についてバリッドビットのみに基づいてインバリデート処理する方法のようにインバリデート不要なデータブロックまでインバリデートされることがないため、キャッシュミス率の低減によりキャッシュメモリの使用効率を高めることができる効果が得られる。
【００４６】
また、キャッシュメモリの全アドレス領域の範囲にインクリメント処理を制限したので、従来の、メインメモリ内のインバリデート処理の対象となるアドレス領域の全てにわたってアドレスに対応するデータブロックがキャッシュされているか否か調べる方法に比べて、ＣＰＵから指定される処理が必要な領域がキャッシュメモリサイズを越える場合には、大幅に処理時間を削減することができる。例えば、メインメモリの１ＭＢ分のアドレス領域に対応するデータブロックのインバリデート処理が必要であるが、キャッシュメモリのサイズが１ＫＢである場合に、キャッシュメモリのサイズ分のアドレスだけをスキャンすればよい。すなわち、メインメモリ内の莫大な対象領域に応じた回数、キャッシュメモリにアクセスする必要がなく、処理時間を短縮化できる。
【００４７】
この実施の形態１では、ダイレクトマップ方式のキャッシュメモリのインバリデート処理について説明したが、セットアソシアティブ方式のキャッシュメモリに対しても、タグメモリ２、データメモリ３、インバリデート判定部６をキャッシュウェイの個数の分持つことにより、実施の形態１と同様のインバリデート処理を実行することができる。
【００４８】
実施の形態２．
図３はこの発明の実施の形態２によるキャッシュメモリのブロック図である。図において、２３はコピーバック処理が必要になった場合に、メインメモリ内のコピーバック処理の対象となるアドレス領域を指定する情報が格納される領域指定レジスタ（領域指定部）を示す。
【００４９】
２４はコピーバック判定部（判定部）を示す。コピーバック判定部２４には、領域指定レジスタ２３のアドレス出力２２とタグメモリ２のデータ出力１４とＦ／Ｆ回路４のアドレス出力２０とが入力され、これらに基づいてコピーバック判定部２４は、キャッシュメモリ内のデータブロックがメインメモリ内のコピーバック処理の対象となるアドレス領域内にある否かを判定し、その結果を制御信号２１としてメモリアクセス制御部１に供給する。この実施の形態に係るキャッシュメモリは、図１に示された実施の形態１のキャッシュメモリの領域指定レジスタ５およびインバリデート判定部６の代わりに、領域指定レジスタ２３およびコピーバック判定部２４を有する。図３において図１と共通する要素および情報の流れには同一符号を付し、その説明を省略する。
【００５０】
領域指定レジスタ２３は、メインメモリ（図示せず）内のコピーバック処理の対象領域の開始アドレスを格納するレジスタと、終了アドレスを格納するレジスタまたは対象領域サイズを格納するレジスタとを備える。ＣＰＵ１００はコピーバック処理が必要であることを認識すると、ＣＰＵが実行しているソフトウエアに従って、領域指定レジスタ２３に開始アドレスと、終了アドレスまたは対象領域サイズとを格納する。
【００５１】
実施の形態１と同様に、メインメモリ内の領域を示すアドレスとタグメモリ２およびデータメモリ３内の領域を示すアドレスの関係は、ダイレクトマップ方式に基づいている。
【００５２】
次に動作について説明する。
図４は実施の形態２によるキャッシュメモリをコピーバック処理するときのタイミングチャートである。図において、３２はＣＰＵ１００からキャッシュメモリに供給されるコピーバック処理要求信号、３３はメインメモリへの書き戻し開始時にハイレベルとなり、書き戻し終了時にローレベルとなるビジー信号を示す。ビジー信号３３は、メインメモリへの書き戻しの間、メモリアクセス制御部１によるリードアクセスを一時停止するために、ＣＰＵ１００からメモリアクセス制御部１に供給される。３４はタグメモリ２のデータ出力１４中のダーティビットを示す。ダーティビットとはＣＰＵ１００からキャッシュメモリへの書き込みにより、キャッシュメモリとメインメモリの内容が異なりメインメモリへの書き戻しが必要となることを示すものである。
【００５３】
３５はデータ出力１４中のタグビットを示す。メモリアクセス制御部１からのメモリイネーブル信号１０，１５がハイレベルでライトイネーブル信号１１，１６がハイレベルの時、タグメモリに対してライトアクセスが行われ、メモリイネーブル信号１０，１５がハイレベルでライトイネーブル信号１１，１６がローレベルの時、リードアクセスが行われる。
【００５４】
ＣＰＵ１００はコピーバック処理が必要であることを認識すると、実行しているソフトウエアに従って、メモリアクセス制御部１にハイレベルのコピーバック処理要求信号を供給する。メモリアクセス制御部１はコピーバック処理要求信号に応答し、まずメモリイネーブル信号１０，１５をハイレベルにし、タグメモリ２およびデータメモリ３の先頭アドレス（０）をアドレス入力１２，１７としてそれぞれタグメモリ２、データメモリ３に入力する。ここで入力するタグメモリ２のアドレスは実施の形態１に関連して既述したインデックスアドレスにあたる。タグメモリ２からはインデックスアドレスに対応するタグアドレス（タグビット３５、すなわち対応データブロックが格納されたメインメモリ内の領域を示すアドレスの上位ビット）およびダーティビット３４がデータ出力１４として出力され、データメモリ３からはインデックスアドレスに対応するアドレスの領域に格納されたデータブロックの内容がデータ出力１９として出力される。図４中の、ＴＧ０はアドレス入力１２が先頭アドレス（０）のときのタグビット３５であり、ＴＧ１はアドレス入力１２が２番目のアドレス（１）のときのタグビット３５である。
【００５５】
コピーバック判定部２４には、データ出力１４中のタグアドレス（タグビット３５、上位ビット）と、Ｆ／Ｆ回路４から出力された上記インデックスアドレス（中間ビット）とが入力される。タグメモリ２ではアドレス入力１２の入力からデータ出力１４の出力までは１クロックサイクルを要するが、Ｆ／Ｆ回路４はアドレス入力１２を１クロックサイクル遅らせて出力する。従って、互いに対応するタグアドレスとインデックスアドレス（アドレス入力１２）はコピーバック判定部２４に同時に供給される。例えば、「ＴＧ０」のタグビット３５と「０」のアドレス入力１２は同時にコピーバック判定部２４に供給される。コピーバック判定部２４は、これらをつなぎ合わせて１つのアドレスを生成する。すなわちデータメモリ３内のデータブロックに対応するメインメモリ内のアドレスを推定する。
【００５６】
続いて、コピーバック判定部２４は、推定されたアドレスが領域指定レジスタ２３により指定される領域の範囲内であるか否かを判定する。この第１の判定が肯定的であれば、さらにコピーバック判定部２４は、データ出力１４中のバリッドビット＝１（有効）であるか否かを判定する。この第２の判定も肯定的である場合には、コピーバック判定部２４は、ダーティビット＝１（メインメモリへの書き戻しが必要）であるか否かを判定する。この第３の判定も肯定的である場合には、コピーバック判定部２４は、ハイレベルの制御信号２１をメモリアクセス制御部１およびＣＰＵ１００に供給する。
【００５７】
制御信号２１がローレベルの場合、メモリアクセス制御部１はアドレス入力１２，１７をインクリメントし、他の信号は変化させない。他方、メモリアクセス制御部１は、ハイレベルの制御信号２１に応答して、ライトイネーブル信号１１を１クロックサイクルだけハイレベルにすると共に同一のアドレス入力１２，１７を１クロックサイクルだけ繰り返し、データ入力１３を用いて、該当するインデックスアドレス（アドレス入力１２）に対応するエントリにダーティビット＝０を書き込む。これは後述のように直後にコピーバックを行うので、ダーティビットを１にしておく必要がないからである。また、メモリアクセス制御部１は、同時にライトイネーブル信号１６をローレベルにして、データメモリ３から読み出されるデータ出力１９を維持する。
【００５８】
ハイレベルの制御信号２１に１クロックサイクル遅れて、ＣＰＵ１００（書き戻し部）はデータメモリ３から読み出されたデータ出力１９の内容をメインメモリに書き戻す。書き戻しの間、ＣＰＵ１００はビジー信号３３をハイレベルにし、これに応じてメモリアクセス制御部１はメモリイネーブル信号１０，１５をローレベルにする。ビジー信号３３の立ち上げの瞬間、メモリアクセス制御部１はアドレス入力１２，１７をインクリメントするが、ビジー信号３３がハイレベルの間およびその後の１クロックサイクルの間は、アドレス入力１２，１７のインクリメントを一時停止する。
【００５９】
メインメモリへの書き戻し処理が終了すると、ＣＰＵ１００はビジー信号３３をローレベルにし、メモリアクセス制御部１がメモリイネーブル信号１０，１５を再びハイレベルにし、既にインクリメントされたインデックスアドレス（アドレス入力１２，１７）によってタグメモリ２およびデータメモリ３へのリードアクセスを再開し、次のアドレスについて同じ処理を行う。最終インデックスアドレスまで上記処理が行われると、コピーバック処理終了となる。
【００６０】
コピーバック判定部２４で推定したメインメモリ内のアドレスが領域指定レジスタ２３により指定される領域の範囲内にない場合には、上記の第１の判定が否定的となる。このことは、キャッシュメモリ内の該当するアドレスがコピーバック処理の対象ではないことを意味する。従って、コピーバック判定部２４は、制御信号２１をローレベルに維持し、ＣＰＵ１００はコピーバックせず、メモリアクセス制御部１は、そのアドレスについては書込を行うことなく、アドレス入力１２，１７をインクリメントする。
【００６１】
コピーバック判定部２４で推定したメインメモリ内のアドレスが領域指定レジスタ２３により指定される領域の範囲内にある場合であっても、バリッドビットが０である場合には、データブロックをコピーバックする必要はない。従って、上記の第２の判定が否定的な場合にも、コピーバック判定部２４は、制御信号２１をローレベルに維持し、ＣＰＵ１００はコピーバックせず、メモリアクセス制御部は、そのアドレスについては書込を行うことなく、アドレス入力１２，１７をインクリメントする。
【００６２】
さらにダーティビットが０で第３の判定が否定的な場合にも、メインメモリへの書き戻しは不要であるので、コピーバック判定部２４は、制御信号２１をローレベルに維持し、ＣＰＵ１００はコピーバックせず、メモリアクセス制御部は、そのアドレスについては書込を行うことなく、アドレス入力１２，１７をインクリメントする。
【００６３】
以上のように、この実施の形態２によれば、メモリアクセス制御部１が、キャッシュメモリの全エントリのインデックスアドレスを生成してタグメモリ２に供給し、コピーバック判定部２４が、タグメモリ２のデータ出力１４とインデックスアドレスに基づいてキャッシュメモリに格納されているデータブロックがコピーバック処理の対象データブロックであるか否かを判定し、対象データブロックである場合のみコピーバックするようにした。従って、ＣＰＵ１００からの１回の要求により、領域指定レジスタ２３に指定したコピーバック処理が必要なアドレス領域に対応し、かつキャッシュメモリに格納されているデータブロックのみについてコピーバック処理することが可能となる。つまり、この実施の形態では、キャッシュメモリの全領域をスキャンするが、領域指定レジスタ２３で指定されていないコピーバック対象ではないアドレスについてはコピーバック処理は行わない。このため、従来のキャッシュメモリの全領域についてバリッドビットおよびダーティビットのみに基づいてコピーバック処理する方法のようにコピーバック不要なデータブロックまで書き戻しされることがないため、コピーバック処理に要する処理時間（クロックサイクル）を削減できるという効果が得られる。
【００６４】
また、キャッシュメモリの全アドレス領域の範囲にインクリメント処理を制限したので、従来の、メインメモリ内のコピーバック処理の対象となるアドレス領域の全てにわたってアドレスに対応するデータブロックがキャッシュされているか否かを調べる方法に比べて、ＣＰＵから指定される処理が必要な領域がキャッシュメモリサイズを越える場合には、大幅に処理時間を削減することができる。例えば、メインメモリの１ＭＢ分のアドレス領域に対応するデータブロックのコピーバック処理が必要であるが、キャッシュメモリのサイズが１ＫＢである場合に、キャッシュメモリのサイズ分のアドレスだけをスキャンすればよい。すなわち、メインメモリ内の莫大な対象領域に応じた回数、キャッシュメモリにアクセスする必要がなく、処理時間を短縮化できる
【００６５】
この実施の形態２では、ダイレクトマップ方式のキャッシュメモリのコピーバック処理について説明したが、セットアソシアティブ方式のキャッシュメモリに対しても、タグメモリ２、データメモリ３、コピーバック判定部２４をキャッシュウェイの個数の分持つことにより、実施の形態２と同様のコピーバック処理を実行することができる。
【００６６】
また、実施の形態１と実施の形態２の構成を組み合わせ、メインメモリ内のインバリデート対象およびコピーバック対象となる指定した領域のみにインバリデート処理およびコピーバック処理を行うことができる回路も構成することができる。これについては実施の形態３でも述べる。
【００６７】
実施の形態３．
図５はこの発明の実施の形態３によるキャッシュメモリのブロック図である。図において、１０１はバス制御関連回路、１０２はメインメモリ、１０３はＤＭＡコントローラを示し、ＣＰＵ１００、バス制御関連回路１０１、メインメモリ１０２およびＤＭＡコントローラ１０３以外のブロックはキャッシュメモリの構成要素を示す。
【００６８】
４０は領域指定レジスタ（領域指定部）を示す。領域指定レジスタ４０には、キャッシングのインバリデート処理またはコピーバック処理が必要になった場合に、メインメモリ１０２内のインバリデート処理またはコピーバック処理の対象となるアドレス領域を指定する情報が格納される。
【００６９】
４１はインバリデート・コピーバック判定部（判定部）を示す。インバリデート・コピーバック判定部４１には、領域指定レジスタ４０のアドレス出力２２とタグメモリ２のデータ出力１４およびＦ／Ｆ回路４のアドレス出力２０とが入力され、これらに基づいてインバリデート・コピーバック判定部４１は、キャッシュメモリ内のデータブロックがインバリデート処理またはコピーバック処理の対象となるアドレス領域内にあるか否かを判定し、その結果を制御信号２１としてメモリアクセス制御部１に供給する。
【００７０】
４２はキャッシュメモリへの書込機能をロックするためにＣＰＵ１００（ロック部、処理指令部）からメモリアクセス制御部１に供給されるロック制御信号を示す。４３はＣＰＵ１００がキャッシュメモリへアクセスするときに、ＣＰＵ１００がメモリアクセス制御部１に供給するアクセスアドレスからメモリアクセス制御部１が抽出したタグアドレス、４４はタグアドレス４３を１クロックサイクル遅らせてアドレス出力４５として出力する第２のＦ／Ｆ（フリップフロップ）回路を示す。
【００７１】
４６はヒット判定部を示す。ヒット判定部４６には、第２のＦ／Ｆ回路４４のアドレス出力４５とタグメモリ２のデータ出力１４とが入力され、これらに基づいてヒット判定部４６は、キャッシュメモリに対するＣＰＵ１００のアクセスがヒットしたかミスしたかを判定し、その結果をヒット判定信号４７として出力する。図５において図１と共通する要素および情報の流れには同一符号を付し、その説明を省略する。
【００７２】
領域指定レジスタ４０は、メインメモリ内のインバリデート処理またはコピーバック処理の対象領域の開始アドレスを格納するレジスタと、終了アドレスを格納するレジスタまたは対象領域サイズを格納するレジスタとを備える。ＣＰＵ１００はインバリデート処理またはコピーバック処理が必要であることを認識すると、ＣＰＵ１００が実行しているソフトウエアに従って、領域指定レジスタ４０に開始アドレスと、終了アドレスまたは対象領域サイズとを格納する。
【００７３】
次に動作について説明する。まず、ＣＰＵ１００がメモリ内容を読み出す手順について説明する。
ＣＰＵ１００はメモリ内容を読み出すためにキャッシュメモリにアクセスするとき、読み出しアドレス（アクセスアドレス）をメモリアクセス制御部１に供給する。この実施の形態でも、ダイレクトマップ方式を採用しており、読み出しアドレスは、メインメモリ内の領域を示すアドレスであって、上位ビット（タグアドレス）、中間ビット（インデックスアドレス）、下位ビットに区分されうる。
【００７４】
メモリアクセス制御部１は読み出しアドレスのうちインデックスアドレスを抽出し、インデックスアドレス（上位ビット）をアドレス入力１２としてタグメモリ２に供給し、タグアドレス４３（下位ビット）を第２のＦ／Ｆ回路４４に供給する。タグメモリ２からはインデックスアドレスの領域に格納されたタグアドレス（対応データブロックが格納されたメインメモリ内の領域を示すアドレスの上位ビット）がデータ出力１４として出力される。
【００７５】
ヒット判定部４６には、データ出力１４中のタグアドレス（上位ビット）と、第２のＦ／Ｆ回路４４から出力されたデータ出力４５すなわちタグアドレス（上位ビット）とが入力される。タグメモリ２ではアドレス入力１２の入力からデータ出力１４の出力までは１クロックサイクルを要するが、第２のＦ／Ｆ回路４４はタグアドレス４３を１クロックサイクル遅らせて出力する。従って、互いに一致するはずである二つのタグアドレスがデータ出力４５とデータ出力１４によってヒット判定部４６に同時に供給される。ヒット判定部４６は、これらが一致するか否か判定する。一致する場合はキャッシュアクセスに成功し、一致しない場合はキャッシュミスしたことを意味する。
【００７６】
メモリアクセス制御部１は、タグメモリ２にアクセスするのと同じタイミングで同じインデックスアドレスをアドレス入力１７としてデータメモリ３に供給し、データメモリ３からはインデックスアドレスの領域に格納されたデータブロックの内容がデータ出力１９として出力される。キャッシュアクセスが成功したと判定された場合は、このデータ出力１９をＣＰＵ１００が利用することができる。キャッシュミスしたと判定された場合には、バス制御関連回路１０１によりミスしたデータブロックをメインメモリ１０２から取り込むキャッシュリプレースが実行される。すなわち、メインメモリ１０２からそのデータブロックをキャッシュメモリにコピーすると共に、ＣＰＵ１００はそのデータブロックを利用することができるようになる。
【００７７】
この実施の形態３でのインバリデート処理は、実施の形態１のインバリデート処理に関する説明のうち領域指定レジスタ５を領域指定レジスタ４０と読み替え、インバリデート判定部６をインバリデート・コピーバック判定部４１と読み替えれば理解されるので、その詳細な説明を省略する。また、この実施の形態３でのコピーバック処理は、実施の形態２のコピーバック処理に関する説明のうち領域指定レジスタ２３を領域指定レジスタ４０と読み替え、コピーバック判定部２４をインバリデート・コピーバック判定部４１と読み替えれば理解されるので、その詳細な説明を省略する。要するに、この実施の形態３によるキャッシュメモリは、実施の形態１および実施の形態２のキャッシュメモリ機能を併有する。
【００７８】
このようなインバリデート処理またはコピーバック処理は、例えばＤＭＡコントローラ１０３によるメインメモリ１０２へのアクセスを契機として実行される。すなわち、キャッシュアクセスを行わないＤＭＡコントローラ１０３等のバスマスタによりメインメモリ１０２が書き換えられる場合、書き換えられる前にＣＰＵ１００によりキャッシュメモリに対してコピーバック処理、インバリデート処理を行い、これらの処理終了後にＤＭＡ転送によりメインメモリ１０２の書き換えが行われるようにする。ＤＭＡ転送とは、ＣＰＵ１００すなわちそれが実行するソフトウエアにより制御し、ＤＭＡコントローラ１０３がメインメモリからメインメモリへのデータ転送や、メインメモリとキャッシュメモリを除くその他のメモリとの間のデータ転送を行うことである。
【００７９】
しかし、ＤＭＡ転送の途中でもＣＰＵ１００がメモリアクセスすることがある。この場合、ＣＰＵ１００がメインメモリ１０２内のＤＭＡ対象領域に隣接する領域にアクセスすることがありうる。ＣＰＵ１００がメインメモリ１０２にアクセスするのはキャッシュミスの場合なので、キャッシュリプレースが起こる。ここで、キャッシュメモリの１エントリサイズは、キャッシュヒット率を高めるため、一般にＣＰＵ１００またはＤＭＡコントローラ１０３等のバスマスタによるアクセスの最小単位より大きい。従って、メインメモリ１０２内のＤＭＡ対象領域に隣接する領域のデータブロックだけでなく、これに隣接するＤＭＡ対象領域のデータブロックがＤＭＡ転送による書き換え前にも関わらず、キャッシュメモリにコピーされてしまう可能性がある。このような場合、メインメモリとキャッシュメモリとの間のコヒーレンシが保たれなくなるという問題がある。
【００８０】
この問題を解決するために、キャッシュメモリ全領域に対してコピーバック処理、インバリデート処理を行った後、キャッシュ機能を無効にする方法や、メインメモリのＤＭＡ転送対象領域のデータブロックとそれ以外の有効なデータ領域のデータブロックが一緒にキャッシュメモリの１つのエントリに取り込まれないようにソフトウエアにより領域を分離する方法が考えられる。しかし、これらの方法は、キャッシュメモリの性能劣化、ソフトウエアの開発のためのコスト増大、メモリの使用効率の低下などの問題を招く。そこで、この実施の形態３では、実施の形態１、実施の形態２のインバリデート処理、コピーバック処理にキャッシュメモリのロック機能を組み合わせることにより、上記問題を解決できるようにする。ここで、キャッシュメモリのロック機能とは、ＣＰＵ１００がキャッシュミスした場合にキャッシュリプレースを行わないようにする機能である。つまり、ロック機能が有効な場合、ＣＰＵ１００がキャッシュミスしても、メインメモリ１０２のデータブロックの内容をキャッシュメモリに書き込まない。
【００８１】
図６はこの発明の実施の形態３によるＤＭＡ転送のためのメインメモリへのライトアクセス手順を示すフローチャートである。ＤＭＡ転送を開始する前に、この手順を開始する。まず、ＣＰＵ１００がロック制御信号４２をハイレベルにしてメモリアクセス制御部１に供給し、これを受けてメモリアクセス制御部１がキャッシュメモリをロックする（ステップＳＴ１００）。
【００８２】
続いて、ＣＰＵ１００がメインメモリ１０２内のＤＭＡ転送対象領域とこれに隣接する領域を包含する領域をインバリデート・コピーバック処理対象領域として領域指定レジスタ４０に指定し、メモリアクセス制御部１にコピーバック処理要求信号を供給すると、キャッシュメモリが上述のようにコピーバック処理（ステップＳＴ１０１）を開始する。コピーバック処理終了後、ＣＰＵ１００がインバリデート処理要求信号を出力し、これに応じて上述のようにキャッシュメモリがインバリデート処理を開始する（ステップＳＴ１０２）。
【００８３】
インバリデート処理終了後、ＣＰＵ１００はＤＭＡ転送を許容する指令をＤＭＡコントローラ１０３に与え、ＤＭＡコントローラ１０３がＤＭＡ転送を開始しメインメモリ１０２の内容を書き換える（ステップＳＴ１０３）。次に、ＣＰＵ１００はＤＭＡ転送が終了したか否かを判定し（ステップＳＴ１０４）、終了したと判定されたらＣＰＵ１００がメモリアクセス制御部１に供給されていたロック制御信号４２をローレベルにし、これに応じてメモリアクセス制御部１がキャッシュメモリのロックを解除する（ステップＳＴ１０５）。すなわちキャッシュメモリは通常の状態に戻る。
【００８４】
キャッシュメモリがロックされている間は、ＣＰＵ１００がキャッシュミスによって、メインメモリ１０２内のＤＭＡ転送対象領域に隣接する領域をアクセスしても、キャッシュリプレースは起こらない。よって、ＤＭＡ転送による書き込み前のメインメモリ内のデータブロックがキャッシュメモリに取り込まれることはなく、メインメモリとキャッシュメモリのコヒーレンシを保つことができる。
【００８５】
以上のように、この実施の形態３によれば、この実施の形態３によるキャッシュメモリは、実施の形態１および実施の形態２のキャッシュメモリ機能を併有するので、実施の形態１および実施の形態２と同様の効果が得られる。
【００８６】
また、ＣＰＵ１００によりキャッシュメモリをロックし、続いてコピーバック処理、インバリデート処理を行い、インバリデート処理終了後にＤＭＡ転送を行い、ＤＭＡ転送終了後にキャッシュメモリのロックを解除するようにしたので、ＤＭＡコントローラ１０３等のキャッシュアクセスしないバスマスタによってメインメモリ１０２が書き換えられる途中で、ＣＰＵ１００がメインメモリ１０２にアクセスする場合でも、キャッシュリプレースが回避され、メモリとキャッシュメモリとのコヒーレンシを保つことができる効果が得られる。
【００８７】
この実施の形態３では、ダイレクトマップ方式のキャッシュメモリのコピーバック処理について説明したが、セットアソシアティブ方式のキャッシュメモリに対しても、タグメモリ２、データメモリ３、インバリデート・コピーバック判定部４１をキャッシュウェイの個数の分持つことにより、この実施の形態３と同様のインバリデート処理およびコピーバック処理を実現することができる。
【００８８】
また、ＤＭＡコントローラ１０３がメインメモリ１０２にデータブロックを書き込む場合だけでなく、ＤＭＡコントローラ１０３がメインメモリ１０２からデータブロックを読み出す場合にも、読み出す前にＣＰＵがＤＭＡ転送対象領域に対してキャッシュメモリからのコピーバック処理を要求し、コピーバック処理終了後、ＤＭＡコントローラ１０３がメインメモリ１０２からデータブロックを読み出すことも可能である。これによれば、ＤＭＡコントローラ１０３はキャッシュメモリのキャッシュ内容を反映した最新のデータブロックを読み出すことができる。
【００８９】
実施の形態４．
図７はこの発明の実施の形態４によるキャッシュメモリのブロック図である。図において、５０はＤＭＡコントローラ（ロック部、処理指令部）、５１Ａ，５１Ｂ，５１ＣはＤＭＡコントローラ５０からメモリアクセス制御部１に供給されるインバリデート処理要求信号、コピーバック処理要求信号、ロック制御信号をそれぞれ示す。
【００９０】
また、５２はメモリアクセス制御部１からＤＭＡコントローラ５０に供給されるインバリデート処理中またはコピーバック処理中であることを示すステータス信号を示す。図５と共通する要素および情報の流れには同一符号を付し、その説明を省略する。ＣＰＵ１００、バス制御関連回路１０１、メインメモリ１０２およびＤＭＡコントローラ５０以外のブロックはキャッシュメモリの構成要素を示す。
【００９１】
実施の形態３では、インバリデート処理、コピーバック処理を行うメインメモリの対象領域を指定する情報をＣＰＵ１００が実行するソフトウエアが領域指定レジスタ４０（図５参照）に格納し、領域指定レジスタ４０に格納された情報をインバリデート・コピーバック判定部４１が参照した。しかし、この実施の形態４では、インバリデート処理、コピーバック処理を行うメインメモリの対象領域を指定する対象領域情報９０をＤＭＡコントローラ５０がインバリデート・コピーバック判定部４１に供給する。
【００９２】
また、実施の形態３では、インバリデート処理要求信号、コピーバック処理要求信号、ロック制御信号４２をＣＰＵ１００がメモリアクセス制御部１に供給するが、この実施の形態４では、インバリデート処理要求信号５１Ａ、コピーバック処理要求信号５１Ｂ、ロック制御信号５１ＣもＤＭＡコントローラ５０がメモリアクセス制御部１に供給する。
【００９３】
次に動作について説明する。
ＣＰＵ１００がメモリ内容を読み出す手順は、実施の形態３と同様である。すなわち、読み出し手順は、ＣＰＵ１００が読み出しアドレス（アクセスアドレス）をメモリアクセス制御部１に供給することで開始し、ヒット判定部４６が、データ出力１４中のタグアドレスと、第２のＦ／Ｆ回路４４から出力されたデータ出力４５すなわちタグアドレスとを比較する。両者が一致する場合はキャッシュアクセスに成功し、一致しない場合はキャッシュミスしたことを意味する。
【００９４】
また、この実施の形態４では、ＤＭＡ転送のためのメインメモリへのライトアクセス手順をＣＰＵ１００ではなく、ＤＭＡコントローラ５０が実行する。図６を参照しながらこの手順を説明する。実施の形態４において、この手順はソフトウエアまたはハードウエアがＤＭＡコントローラ５０に対して転送開始要求をするだけで開始する。
【００９５】
ＤＭＡコントローラ５０は上記転送開始要求に応答して、メモリアクセス制御部１にハイレベルのロック制御信号５１Ｃを供給し、これを受けてメモリアクセス制御部１がキャッシュメモリをロックする（ステップＳＴ１００）。続いて、ＤＭＡコントローラ５０はメインメモリ１０２内のＤＭＡ転送対象領域とこれに隣接する領域を包含する領域をインバリデート・コピーバック処理対象領域として指定する対象領域情報９０をインバリデート・コピーバック判定部４１に供給し、さらにメモリアクセス制御部１にコピーバック処理要求信号５１Ｂを供給する。すると、キャッシュメモリが上述の実施の形態２，３と同様にコピーバック処理（ステップＳＴ１０１）を開始する。このコピーバック処理要求信号５１Ｂに応答して、メモリアクセス制御部１はＤＭＡコントローラ５０にコピーバック処理中のステータス信号５２を返す。ステータス信号５２は、ＤＭＡコントローラ５０によるＤＭＡ転送をまだ行わせない役割を果たす。
【００９６】
コピーバック処理が終了したら、ＤＭＡコントローラ５０はメモリアクセス制御部１にインバリデート処理要求信号５１Ａを供給する。これに応じて上述の実施の形態１，３と同様にキャッシュメモリがインバリデート処理を開始する（ステップＳＴ１０２）。インバリデート処理要求信号５１Ａに応答して、メモリアクセス制御部１はＤＭＡコントローラ５０にインバリデート処理中のステータス信号５２を返す。このステータス信号５２も、ＤＭＡコントローラ５０によるＤＭＡ転送をまだ行わせない役割を果たす。従って、コピーバック処理およびインバリデート処理中は、ＤＭＡ転送は開始されない。
【００９７】
インバリデート処理終了後、メモリアクセス制御部１はステータス信号５２を解除し、ＤＭＡコントローラ５０はＤＭＡ転送を開始し、メインメモリ１０２の内容を書き換える（ステップＳＴ１０３）。ＤＭＡ転送終了後（ステップＳＴ１０４）、ＤＭＡコントローラ５０はメモリアクセス制御部１に供給されていたロック制御信号５１Ｃをローレベルにし、これに応じてメモリアクセス制御部１がキャッシュメモリのロック機能を解除する（ステップＳＴ１０５）。すなわちキャッシュメモリは通常の状態に戻る。以上の動作により、ソフトウエアまたはハードウエアがＤＭＡコントローラ５０に転送開始要求を出力するだけで図６の処理フローを行うことができる。
【００９８】
また、メインメモリ１０２にデータブロックを書き込む場合だけでなく、この実施の形態では、ＤＭＡコントローラ５０がメインメモリからデータブロックを読み出す場合にも、読み出す前にＣＰＵがＤＭＡ転送対象領域に対してキャッシュメモリからのコピーバック処理を要求し、ＤＭＡコピーバック処理終了後、ＤＭＡコントローラ５０がメインメモリ１０２からデータブロックを読み出すことも可能である。
【００９９】
以上のように、この実施の形態４によれば、実施の形態３と同様の効果を達成することができるだけでなく、ＤＭＡコントローラ５０がメインメモリ１０２にアクセスを行う場合、ＤＭＡコントローラ５０が、キャッシュメモリのロック、指定されたアドレス領域内のデータブロックのみのコピーバック処理、インバリデート処理を指令することができるため、従来の方法よりもＣＰＵの負荷を軽減できる効果が得られる。
【０１００】
【発明の効果】
以上のように、この発明によれば、キャッシュメモリ制御装置が、キャッシュデータを記憶するデータメモリと、データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と各データブロックが有効か否かを示すバリッド情報を記憶するタグメモリと、キャッシング無効化処理が必要になった場合に、メインメモリ内のキャッシング無効化処理の対象領域に関する情報を指定する領域指定部と、タグメモリの全領域にわたってタグメモリから順次読み出されたアドレス情報と領域指定部に指定された情報に基づいて、メインメモリ内のキャッシング無効化処理の対象領域に対応するデータブロックがデータメモリに記憶されているか否かを判定する判定部と、判定部の判定が肯定的な場合に、キャッシング無効化処理の対象領域に対応するデータブロックに関するバリッド情報をデータブロックが無効であることを示すように書き換える制御部とを備えるように構成したので、インバリデート不要なデータブロックまでインバリデートされることがないため、キャッシュミス率の低減によりキャッシュメモリの使用効率を高めることができる効果がある。
【０１０１】
この発明によれば、キャッシュメモリ制御装置が、キャッシュデータを記憶するデータメモリと、データメモリ内の各データブロックに対応するメインメモリ内のアドレスを特定するためのアドレス情報と各データブロックについてメインメモリへの書き戻しが必要か否かを示すダーティ情報を記憶するタグメモリと、メインメモリへの書き戻し処理が必要になった場合に、メインメモリ内の書き戻し処理の対象領域に関する情報を指定する領域指定部と、タグメモリの全領域にわたってタグメモリから順次読み出されたアドレス情報と領域指定部に指定された情報に基づいて、メインメモリ内の書き戻し処理の対象領域に対応するデータブロックがデータメモリに記憶されているか否かを判定する判定部と、判定部の判定が肯定的な場合に、書き戻し処理の対象領域に対応するデータブロックをメインメモリに書き戻す書き戻し部とを備えるように構成したので、コピーバック不要なデータブロックまで書き戻しされることがないため、コピーバック処理に要する処理時間を削減できるという効果がある。
【０１０２】
この発明によれば、キャッシュメモリ制御装置が、キャッシュメモリにアクセスしないバスマスタがメインメモリにデータを書き込む前に、キャッシュメモリをキャッシュデータの置換処理不可能にロックするロック部と、ロック部がキャッシュメモリをロックした後に、キャッシング無効化処理およびメインメモリへの書き戻し処理をキャッシュメモリに実行させる処理指令部とを備えており、バスマスタがメインメモリ内のデータを書き込む領域を少なくとも含む領域に関する情報をキャッシング無効化処理および書き戻し処理の対象領域に関する情報として領域指定部が指定するように構成したので、バスマスタによってメインメモリが書き換えられる途中で、ＣＰＵがメインメモリにアクセスする場合でも、キャッシュリプレースが回避され、メモリとキャッシュメモリとのコヒーレンシを保つことができる効果がある。
【０１０３】
この発明によれば、キャッシュメモリにアクセスしないバスマスタが、ロック部、処理指令部および領域指定部を備えるように構成したので、ＣＰＵの負荷を軽減できる効果がある。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるキャッシュメモリのブロック図である。
【図２】同実施の形態１によるキャッシュメモリをインバリデート処理するときのタイミングチャートである。
【図３】同実施の形態２によるキャッシュメモリのブロック図である。
【図４】同実施の形態２によるキャッシュメモリをコピーバック処理するときのタイミングチャートである。
【図５】同実施の形態３によるキャッシュメモリのブロック図である。
【図６】同実施の形態３によるＤＭＡ転送のためのメインメモリへのライトアクセス手順を示すフローチャートである。
【図７】同実施の形態４によるキャッシュメモリのブロック図である。
【図８】従来のキャッシュメモリのブロック図である。
【図９】従来のキャッシュメモリをインバリデート処理するときのタイミングチャートである。
【図１０】従来のキャッシュメモリをコピーバック処理するときのタイミングチャートである。
【符号の説明】
１　メモリアクセス制御部、２　タグメモリ、３　データメモリ、４　Ｆ／Ｆ回路、５，２３，４０　領域指定レジスタ、６　インバリデート判定部、１０，１５　メモリイネーブル信号、１１，１６　ライトイネーブル信号、１２，１７アドレス入力、１３，１８　データ入力、１４，１９　データ出力、２０，２２　アドレス出力、２１　制御信号、２４　コピーバック判定部、３０　クロック信号、３１　インバリデート処理要求信号、３２　コピーバック処理要求信号、３３　ビジー信号、３４　ダーティビット、３５　タグビット、４１　インバリデート・コピーバック判定部、４２　ロック制御信号、４３，４５　タグアドレス、４４　第２のＦ／Ｆ回路、４６　ヒット判定部、４７　ヒット判定信号、５０　ＤＭＡコントローラ、５１Ａ　処理信号、５２　ステータス信号、９０　対象領域情報、１００　ＣＰＵ、１０１　バス制御関連回路、１０２　メインメモリ、１０３　ＤＭＡコントローラ。
【図１】
2004102825.tif 000003
【図２】
2004102825.tif 000004
【図３】
2004102825.tif 000005
【図４】
2004102825.tif 000006
【図５】
2004102825.tif 000007
【図６】
2004102825.tif 000008
【図７】
2004102825.tif 000009
【図８】
2004102825.tif 000010
【図９】
2004102825.tif 000011
【図１０】
2004102825.tif 000012