(57)【特許請求の範囲】
【請求項１】
所定の対応関係に基づきメインメモリのアドレスからキャッシュメモリのアドレスを特定し、前記メインメモリに格納されたプログラム又はデータが前記特定したキャッシュメモリのアドレスに書き込まれるように前記キャッシュメモリを制御するキャッシュメモリの制御装置であって、
前記メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータについては、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれるように前記キャッシュメモリを制御し、
前記メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータを読み出そうとする際に、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから前記所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれたプログラム又はデータを対象としてキャッシュヒットを判定するキャッシュヒット判定手段を備えることを特徴とする、
キャッシュメモリの制御装置。
【請求項２】
請求項１に記載のキャッシュメモリの制御装置であって、
前記キャッシュヒット判定手段は、
前記メインメモリにおける特定のアドレスを保持する第１の保持手段と、
前記メインメモリにおける特定のアドレスから前記所定アドレス分を逆向きにオフセットしたアドレスを保持する第２の保持手段と、
前記第１の保持手段により保持されたアドレスから前記第２の保持手段に保持されたアドレスを差し引いたオフセット値を算出する演算手段と、
を備え、
前記演算手段の算出結果を用いて、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから前記所定アドレス分オフセットしたキャッシュメモリのアドレスを特定する手段である、
キャッシュメモリの制御装置。
【請求項３】
請求項１に記載のキャッシュメモリの制御装置であって、
前記キャッシュヒット判定手段は、
前記メインメモリにおける特定のアドレスを保持する第１の保持手段と、
前記所定アドレス分に相当するオフセット値を保持する第２の保持手段と、
を備え、
前記第２の保持手段により保持された前記オフセット値を用いて、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから前記所定アドレス分オフセットしたキャッシュメモリのアドレスを特定する手段である、
キャッシュメモリの制御装置。
【請求項４】
請求項１ないし３のいずれか１項に記載のキャッシュメモリの制御装置と、
該キャッシュメモリの制御装置によって制御される前記キャッシュメモリと、
を備えるキャッシュメモリシステム。
【請求項５】
請求項４に記載のキャッシュメモリシステムであって、
前記メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータが前記キャッシュメモリに書き込まれる際には、前記所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれたことを示すフラグが前記キャッシュメモリに書き込まれ、
前記キャッシュヒット判定手段は、前記フラグを加味してキャッシュヒット判定を行うことを特徴とする、
キャッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリの制御装置、キャッシュメモリシステム、並びにキャッシュメモリの制御装置の製造方法に関する。
【背景技術】
【０００２】
従来、種々のコンピュータにおいて、ＲＡＭ（Random  Access  Memory）等のメインメモリに比して小容量且つ高速アクセス可能なキャッシュメモリが用いられている。キャッシュメモリは、頻繁に用いられるプログラムやデータがメインメモリからコピーされ、ＣＰＵによって繰り返しアクセスされることにより、コンピュータの処理速度を向上させることができる。
【０００３】
キャッシュメモリにおけるプログラムやデータの格納場所（アドレス）は、例えばコピー元のメインメモリのアドレスとの簡易な対応関係に基づいて決定される。例えば、キャッシュメモリにおけるアドレスは、コピー元のメインメモリのアドレス値の下位（又は上位）数バイトと一対一の関係となるように決定される。
【０００４】
特許文献１には、プログラムをコンパイルする際に、オブジェクトファイルをアドレス変換ソフトウェアに通し、キャッシュの各エントリが使われる頻度を同じくらいにすることによって、キャッシュのヒット率が上がるようにメモリ上の配置を行うアドレス割当変更方法について記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−３２４２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、コンピュータのメインメモリに格納されるプログラムやデータが更新（変更）された際に、当該更新されたプログラムやデータ、並びにこれら以降のアドレスに格納されるプログラムやデータは、更新前とは異なるメインメモリのアドレスに格納されることになる。すなわち、メインメモリのアドレス配置が変更された状態となる。
【０００７】
この場合、上記のようにキャッシュメモリにおけるアドレスがコピー元のメインメモリのアドレスとの簡易な対応関係に基づいて決定されるコンピュータでは、キャッシュメモリにおけるプログラムやデータの格納場所（アドレス）も同様に変更されることになる。しなしながら、キャッシュメモリにおけるアドレスの変更は、コンピュータの動作傾向に影響を及ぼすことがあり、車載制御装置等の処理時間に関する信頼性が重要な分野に適用される場合、動作テストやプログラムの更なる修正を要するという煩わしさが生じるおそれがある。
【０００８】
この点、メインメモリに格納されるプログラムやデータの更新時に上記特許文献１に記載のアドレス割当変更方法を適用したとしても、同じ懸念が生じる。特許文献１に記載のアドレス割当変更方法は、更新前におけるキャッシュメモリの使用態様を維持することを目的としておらず、各タスクの処理時間が変動する可能性が高い。
【０００９】
本発明はこのような課題を解決するためのものであり、メインメモリのアドレス配置が変更された前後においてキャッシュメモリの使用態様がなるべく変動しないように制御することが可能なキャッシュメモリの制御装置、これを含むキャッシュメモリシステム、並びにキャッシュメモリの制御装置の製造方法を提供することを、主たる目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するための本発明の第１の態様は、
所定の対応関係に基づきメインメモリのアドレスからキャッシュメモリのアドレスを特定し、前記メインメモリに格納されたプログラム又はデータが前記特定したキャッシュメモリのアドレスに書き込まれるように前記キャッシュメモリを制御するキャッシュメモリの制御装置であって、
前記メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータについては、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれるように前記キャッシュメモリを制御し、
前記メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータを読み出そうとする際に、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから前記所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれたプログラム又はデータを対象としてキャッシュヒットを判定するキャッシュヒット判定手段を備えることを特徴とする、
キャッシュメモリの制御装置である。
【００１１】
この本発明の一態様によれば、メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータについては、所定の対応関係に基づき特定されるキャッシュメモリのアドレスから所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれるようにキャッシュメモリを制御し、メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータを読み出そうとする際に、所定の対応関係に基づき特定されるキャッシュメモリのアドレスから所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれたプログラム又はデータを対象としてキャッシュヒットを判定するため、メインメモリのアドレス配置が変更された前後においてキャッシュメモリの使用態様がなるべく変動しないように制御することができる。
【００１２】
本発明の第１の態様において、
前記キャッシュヒット判定手段は、例えば、
前記メインメモリにおける特定のアドレスを保持する第１の保持手段と、
前記メインメモリにおける特定のアドレスから前記所定アドレス分を逆向きにオフセットしたアドレスを保持する第２の保持手段と、
前記第１の保持手段により保持されたアドレスから前記第２の保持手段に保持されたアドレスを差し引いたオフセット値を算出する演算手段と、
を備え、
前記演算手段の算出結果を用いて、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから前記所定アドレス分オフセットしたキャッシュメモリのアドレスを特定する手段である。
【００１３】
また、本発明の第１の態様において、
前記キャッシュヒット判定手段は、
前記メインメモリにおける特定のアドレスを保持する第１の保持手段と、
前記所定アドレス分に相当するオフセット値を保持する第２の保持手段と、
を備え、
前記第２の保持手段により保持された前記オフセット値を用いて、前記所定の対応関係に基づき特定されるキャッシュメモリのアドレスから前記所定アドレス分オフセットしたキャッシュメモリのアドレスを特定する手段であるものとしてもよい。
【００１４】
本発明の第２の態様は、
本発明の第１の態様のキャッシュメモリの制御装置と、
該キャッシュメモリの制御装置によって制御される前記キャッシュメモリと、
を備えるキャッシュメモリシステムである。
【００１５】
本発明の第２の態様において、
前記メインメモリにおける特定のアドレス以降に格納されたプログラム又はデータが前記キャッシュメモリに書き込まれる際には、前記所定アドレス分オフセットしたキャッシュメモリのアドレスに書き込まれたことを示すフラグが前記キャッシュメモリに書き込まれ、
前記キャッシュヒット判定手段は、前記フラグを加味してキャッシュヒット判定を行うことを特徴とするものとしてもよい。
【発明の効果】
【００１８】
本発明によれば、メインメモリのアドレス配置が変更された前後においてキャッシュメモリの使用態様がなるべく変動しないように制御することが可能なキャッシュメモリの制御装置、これを含むキャッシュメモリシステム、並びにキャッシュメモリの制御装置の製造方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施例に係るキャッシュメモリシステム１を含むコンピュータの簡易なシステム構成例である。
【図２】本発明の第１実施例に係るキャッシュメモリシステム１のより詳細なシステム構成例である。
【図３】メインメモリ７０のアドレス配置が変更される前後のデータ構造の変化を例示した図である。
【図４】本実施例の制御装置２０によりキャッシュ判定が行われる際の各構成要素の動作をフローチャートの形式で示した図である。
【図５】第２実施例に係る制御装置２０の部分構成例である。
【図６】メインメモリ７０のアドレス配置が変更される前後のデータ構造の変化を例示した図である。
【発明を実施するための形態】
【００２０】
以下、本発明を実施するための形態について、添付図面を参照しながら実施例を挙げて説明する。
【実施例】
【００２１】
＜第１実施例＞
以下、図面を参照し、本発明の第１実施例に係るキャッシュメモリシステム１について説明する。図１は、本発明の第１実施例に係るキャッシュメモリシステム１を含むコンピュータの簡易なシステム構成例である。キャッシュメモリシステム１は、ＣＰＵがＲＡＭ（Random  Access  Memory）やＲＯＭ（Read  Only  Memory）、ＥＥＰＲＯＭ（Electrically  Erasable  and  Programmable  Read  Only  Memory）等のメインメモリ７０にアクセスして動作するコンピュータにより用いられ、主要な構成として、キャッシュメモリ１０と、その制御装置２０と、を備える。
【００２２】
キャッシュメモリの概念、用途、構造等については、既に公知となっているため、詳細な説明は省略する。
【００２３】
図２は、本発明の第１実施例に係るキャッシュメモリシステム１のより詳細なシステム構成例である。
【００２４】
キャッシュメモリ１０におけるデータ構造は、例えば、配置変更フラグ１０Ａ、タグ１０Ｂ、データ部１０Ｃが１ラインのデータとして格納される。
【００２５】
制御装置２０は、配置変更前先頭アドレス保持部３０と、配置変更後先頭アドレス保持部３２と、減算器３４と、加算器３６と、比較器（コンパレータ）３８と、セレクタ４０、４２と、一致判定器５０、５２と、アンド回路５４と、を備える。
【００２６】
［キャッシュメモリ１０への書き込み］
制御装置２０の図示しない書き込み制御部は、キャッシュメモリ１０へのプログラム又はデータの書き込みの際に、メインメモリ７０における配置変更前先頭アドレス保持部３０により保持されたアドレス以前のアドレスに格納されたプログラム又はデータについては、例えばメインメモリ７０におけるアドレスの下位４バイト（＝後述するインデックス６０Ｂ）と一対一の関係で決定されるキャッシュメモリ１０のアドレス（図２では縦方向の位置）に書き込む。
【００２７】
一方、制御装置２０の図示しない書き込み制御部は、メインメモリ７０における配置変更前先頭アドレス保持部３０により保持されたアドレスよりも後の（アドレス値が大きい）アドレスに格納されたプログラム又はデータについては、上記メインメモリ７０におけるアドレスの下位４バイトと一対一の関係で決定されるキャッシュメモリ１０のアドレスから所定アドレス分オフセットしたキャッシュメモリ１０のアドレスに書き込む。この際に、配置変更フラグ１０Ａに例えば値１を書き込む。
【００２８】
［キャッシュメモリ１０又はメインメモリ７０からの読み出し］
配置変更前先頭アドレス保持部３０は、メインメモリ７０のアドレス配置が変更された際に、当該アドレスが変更されたプログラム又はデータの変更前の先頭アドレス（メインメモリ７０上のアドレス）を保持している。また、配置変更後先頭アドレス保持部３２は、上記アドレスが変更されたプログラム又はデータの変更後の先頭アドレス（メインメモリ７０上のアドレス）を保持している。これらの保持部は、たとえばレジスタ等であり、コンピュータの起動時にＲＯＭ（Read  Only  Memory）等からデータがロードされて用いられる。また、元々のデータは、マニュアルでインストールされてもよいし、リンクディレクティブファイル等から機械的にメインメモリ７０のブート領域に書き込まれてもよい。
【００２９】
減算器３４は、配置変更前先頭アドレス保持部３０により保持されたアドレス値から、配置変更後先頭アドレス保持部３２により保持されたアドレス値を差し引いた差分を出力する。この出力は、メインメモリ７０のアドレス配置変更に伴う、変更箇所以降のアドレスのオフセット分の符号を反転させた値に相当する。以下、この差分を「オフセット値」と称する。オフセット値は、上記キャッシュメモリ１０への書き込みの際にも利用されてよい。
【００３０】
なお、配置変更前先頭アドレス保持部３０、配置変更後先頭アドレス保持部３２、減算器３４からなる構成に代えて、配置変更前先頭アドレス保持部３０と、オフセット値を保持する保持部とを備える構成としてもよい。
【００３１】
図３は、メインメモリ７０のアドレス配置が変更される前後のデータ構造の変化を例示した図である。図３（Ａ）メインメモリ７０のアドレス配置変更前のデータ構造を例示しており、図３（Ｂ）はメインメモリ７０のアドレス配置変更前のデータ構造を例示している。図示するように、アドレス配置の変更前には、ブートプログラム、プログラムＡ、プログラムＢ、プログラムＣの先頭アドレスの下位４バイトは、いずれも「００００」であるため、キャッシュメモリ１０の同じアドレスに書き込まれることになる。
【００３２】
ところが、アドレス配置の変更後には、プログラムＣの先頭アドレスの下位４バイトは、「１０００」となっているため、キャッシュメモリ１０の変更前とは異なるアドレスに書き込まれることになる。
【００３３】
このような配置変更は、コンピュータの設計段階にも生じ得るし、製品販売後のバージョンアップ時にも生じ得る。ところで、家庭用のコンピュータ等では、キャッシュメモリ１０における格納場所が変更されても特段の問題は生じにくいが、車両等の移動体制御装置やプラント制御装置等、各プログラムの処理タイミングが予め厳密に規定されているような装置においては、キャッシュメモリ１０における格納場所の変更は、キャッシュのヒット率等を変化させ、処理タイミングを当初意図されたものから逸脱させる可能性がある。
【００３４】
そこで、本実施例のキャッシュシステム１では、先頭アドレスに変更が生じたプログラムＣ以降について、変更前と同じように「００００」に相当するキャッシュメモリ１０のアドレスに書き込まれ、また当該アドレスから読み出されるようにキャッシュメモリ１０を制御している。以下、引き続き各構成要素について説明する。
【００３５】
加算器３６は、アクセスアドレス６０により規定されたアドレス値に、減算器３４により算出されたオフセット値（図３の例では、「−１０００」となる）を加算して出力する。ここで、アクセスアドレス６０は、コンピュータのＣＰＵによって読み出し指示がなされたメインメモリ７０のアドレスを示している。アクセスアドレス６０は、例えばタグ６０Ａと、インデックス６０Ｂを含むデータ構造となっている。加算器３６の出力は、メインメモリ７０の配置変更が行われる前のアクセスアドレス６０を表すものとなる。図２では、加算器３６の出力を、変換後アドレス６０*と表記した。変換後アドレス６０*は、アクセスアドレス６０と同様にタグ６０*Ａ及びインデックス６０*Ｂを含む。
【００３６】
比較器３８は、アクセスアドレス６０が示すアドレス値が、配置変更前先頭アドレス保持部３０が保持するアドレス値よりも大きいか否かを判定する。そして、例えば、アクセスアドレス６０が示すアドレス値が、配置変更前先頭アドレス保持部３０が保持するアドレス値よりも大きい場合には値１を、それ以外の場合には値０を出力する。すなわち、比較器３８の出力は、アクセスアドレス６０によって読み出し指示がなされたメインメモリ７０のアドレスが、配置変更箇所よりも前であるか（；値０）、後であるか（；値１）を示すものである。
【００３７】
セレクタ４０には、被選択信号としてアクセスアドレス６０に含まれるインデックス６０Ｂ、及び変換後アドレス６０*に含まれるインデックス６０*Ｂが、選択指示信号として比較器３８の出力が、それぞれ入力される。セレクタ４０は、比較器３８の出力が値０であればインデックス６０Ｂを、比較器３８の出力が値１であればインデックス６０*Ｂを選択して出力する。
【００３８】
セレクタ４２には、被選択信号としてアクセスアドレス６０に含まれるタグ６０Ａ、及び変換後アドレス６０*に含まれるタグ６０*Ａが、選択指示信号として比較器３８の出力が、それぞれ入力される。セレクタ４２は、比較器３８の出力が値０であればタグ６０Ａを、比較器３８の出力が値１であればタグ６０*Ａを選択して出力する。
【００３９】
一致判定器５０には、比較器３８の出力と、セレクタ４０の出力によって特定されたキャッシュメモリ１０のアドレスに格納された１ラインのデータに含まれる配置変更フラグ１０Ａの値が入力される。一致判定器５０は、これらが一致する場合に値１を、一致しない場合に値０を出力する。
【００４０】
一致判定器５２には、セレクタ４２の出力と、セレクタ４０の出力によって特定されたキャッシュメモリ１０のアドレスに格納された１ラインのデータに含まれるタグ１０Ｂの値が入力される。一致判定器５２は、これらが一致する場合に値１を、一致しない場合に値０を出力する。
【００４１】
アンド回路５４には、一致判定器５０、５２の出力が入力される。アンド回路５４は、これらの双方が値１である場合に値１を出力し、それ以外の場合に値０を出力する。そして、アンド回路５４の出力が値１である場合にキャッシュがヒットしたと判定され、キャッシュメモリ１０からプログラム又はデータが読み出される。
【００４２】
一方、アンド回路の出力が値１である場合には、キャッシュがミスしたと判定され、メインメモリ７０からプログラム又はデータが読み出される。この際に、所定の基準に基づき、メインメモリ７０から読み出されたプログラム又はデータはキャッシュメモリ１０に格納される。
【００４３】
図４は、本実施例の制御装置２０によりキャッシュ判定が行われる際の各構成要素の動作をフローチャートの形式で示した図である。本フローは、ＣＰＵからアクセスアドレス６０が入力される度に実行される。
【００４４】
まず、比較器３８が、アクセスアドレス６０によって読み出し指示がなされたメインメモリ７０のアドレスが、配置変更箇所よりも前であるか後であるかを判定する（Ｓ１００）。
【００４５】
配置変更箇所よりも後である場合には、減算器３４及び加算器３６が、配置変更前のアドレスを特定する（Ｓ１０２）。そして、配置変更前のアドレスでキャッシュアクセスを行う（Ｓ１０４）。
【００４６】
この際に、前述のように、一致判定器５０、５２が共に値１を出力したか否かを判定し（Ｓ１０６）、一致判定器５０、５２が共に値１を出力した場合にはキャッシュがヒットしたと判定し（Ｓ１０８）、一致判定器５０、５２の少なくとも一方が値０を出力した場合にはキャッシュがミスしたと判定する（Ｓ１１０）。なお、この場合において、一致判定器５０は、比較器３８の出力と配置変更フラグ１０Ａの値が共に値１であることにより、値１を出力することが想定される。
【００４７】
一方、アクセスアドレス６０によって読み出し指示がなされたメインメモリ７０のアドレスが、配置変更箇所以前である場合には、アクセスアドレス６０に基づいてキャッシュアクセスを行う（Ｓ１１２）。
【００４８】
この際にも、一致判定器５０、５２が共に値１を出力したか否かを判定し（Ｓ１１４）、一致判定器５０、５２が共に値１を出力した場合にはキャッシュがヒットしたと判定し（Ｓ１１６）、一致判定器５０、５２の少なくとも一方が値０を出力した場合にはキャッシュがミスしたと判定する（Ｓ１１８）。なお、この場合において、一致判定器５０は、比較器３８の出力と配置変更フラグ１０Ａの値が共に値０であることにより、値１を出力することが想定される。
【００４９】
以上説明した本実施例の制御装置２０を有するキャッシュシステム１によれば、メインメモリ７０のアドレス配置が変更された前後において、キャッシュメモリ１０の使用態様がなるべく変動しないように制御することができる。この結果、処理タイミングが厳密に規定された制御装置等に、好適に適用することができる。
【００５０】
＜第２実施例＞
以下、図面を参照し、本発明の第２実施例に係るキャッシュメモリシステム２について説明する。なお、構成に関しては、図１を参照することとして、説明を省略する。
【００５１】
本発明の第１実施例に係るキャッシュメモリシステム１は、メインメモリのアドレス配置の変更が一箇所である場合に対応可能なものであるが、本発明は、メインメモリのアドレス配置の変更が複数箇所に亘る場合にも対応可能である。以下、その一例として、メインメモリのアドレス配置の変更が二箇所である場合に対応可能なキャッシュメモリシステム２を例示する。
【００５２】
第２実施例に係るキャッシュメモリシステム２が有する制御装置２０は、配置変更前先頭アドレス保持部３０、配置変更後先頭アドレス保持部３２、減算器３４、加算器３６、比較器３８からなる機能群を二系統備える点で、第１実施例と相違する。以下、この相違点を中心に説明する。
【００５３】
図５は、第２実施例に係る制御装置２０の部分構成例である。図示するように、キャッシュメモリシステム２は、配置変更前先頭アドレス保持部３０Ａ、配置変更後先頭アドレス保持部３２Ａ、減算器３４Ａ、加算器３６Ａ、比較器３８Ａからなる機能群と、配置変更前先頭アドレス保持部３０Ｂ、配置変更後先頭アドレス保持部３２Ｂ、減算器３４Ｂ、加算器３６Ｂ、比較器３８Ｂからなる機能群と、セレクタ４４、４６と、を備える。なお、一致判定器５０、５２、及びアンド回路５４については第１実施例と同様であるため、図示を省略した。また、タグの一致判定に関する構成についても図示を省略している。
【００５４】
［キャッシュメモリ１０への書き込み］
制御装置２０の図示しない書き込み制御部は、キャッシュメモリ１０へのプログラム又はデータの書き込みの際に、メインメモリ７０における配置変更前先頭アドレス保持部３０Ａにより保持されたアドレス以前のアドレスに格納されたプログラム又はデータについては、例えばメインメモリ７０におけるアドレスの下位４バイト（＝後述するインデックス６０Ｂ）と一対一の関係で決定されるキャッシュメモリ１０のアドレス（図２では縦方向の位置）に書き込む。
【００５５】
一方、制御装置２０の図示しない書き込み制御部は、メインメモリ７０における配置変更前先頭アドレス保持部３０Ａにより保持されたアドレスよりも後であり、且つ配置変更前先頭アドレス保持部３０Ｂにより保持されたアドレス以前のアドレスに格納されたプログラム又はデータについては、上記メインメモリ７０におけるアドレスの下位４バイトと一対一の関係で決定されるキャッシュメモリ１０のアドレスから第１の所定アドレス分オフセットしたキャッシュメモリ１０のアドレスに書き込む。この際に、配置変更フラグ１０Ａに例えば値１を書き込む。
【００５６】
更に、制御装置２０の図示しない書き込み制御部は、メインメモリ７０における配置変更前先頭アドレス保持部３０Ｂにより保持されたアドレスよりも後のアドレスに格納されたプログラム又はデータについては、上記メインメモリ７０におけるアドレスの下位４バイトと一対一の関係で決定されるキャッシュメモリ１０のアドレスから第２の所定アドレス分オフセットしたキャッシュメモリ１０のアドレスに書き込む。この際に、配置変更フラグ１０Ａに例えば値２を書き込む。
【００５７】
ここで、第１の所定アドレス分とは、配置変更前先頭アドレス保持部３０Ａにより保持されたアドレスと配置変更後先頭アドレス保持部３２Ａにより保持されたアドレスの差分であり、第２の所定アドレス分とは、配置変更前先頭アドレス保持部３０Ｂにより保持されたアドレスと配置変更後先頭アドレス保持部３２Ｂにより保持されたアドレスの差分である。
【００５８】
図６は、メインメモリ７０のアドレス配置が変更される前後のデータ構造の変化を例示した図である。図６（Ａ）メインメモリ７０のアドレス配置変更前のデータ構造を例示しており、図６（Ｂ）はメインメモリ７０のアドレス配置変更前のデータ構造を例示している。
【００５９】
［キャッシュメモリ１０又はメインメモリ７０からの読み出し］
配置変更前先頭アドレス保持部３０Ａは、メインメモリ７０のアドレス配置が変更された際に、当該アドレスが変更されたプログラム又はデータの変更前の先頭アドレス（メインメモリ７０上のアドレス）を保持している。また、配置変更後先頭アドレス保持部３２Ａは、上記アドレスが変更されたプログラム又はデータの変更後の先頭アドレス（メインメモリ７０上のアドレス）を保持している。これらの保持部は、たとえばレジスタ等であり、コンピュータの起動時にＲＯＭ（Read  Only  Memory）等からデータがロードされて用いられる。また、元々のデータは、マニュアルでインストールされてもよいし、リンクディレクティブファイル等から機械的にメインメモリ７０のブート領域に書き込まれてもよい。
【００６０】
同様に、配置変更前先頭アドレス保持部３０Ｂは、メインメモリ７０のアドレス配置が変更された際に、当該アドレスが変更されたプログラム又はデータの変更前の先頭アドレスを保持しており、配置変更後先頭アドレス保持部３２Ｂは、上記アドレスが変更されたプログラム又はデータの変更後の先頭アドレスを保持している。配置変更前先頭アドレス保持部３０Ａにより保持されたアドレス値は、配置変更前先頭アドレス保持部３０Ｂにより保持されたアドレス値に比して小さいものとする。
【００６１】
減算器３４Ａは、配置変更前先頭アドレス保持部３０Ａにより保持されたアドレス値から、配置変更後先頭アドレス保持部３２Ａにより保持されたアドレス値を差し引いた差分を出力する。この出力は、メインメモリ７０のアドレス配置変更に伴う、変更箇所以降のアドレスのオフセット分の符号を反転させた値に相当する。以下、この差分を「第１のオフセット値」と称する。オフセット値は、上記キャッシュメモリ１０への書き込みの際にも利用されてよい。
【００６２】
同様に、減算器３４Ｂは、配置変更前先頭アドレス保持部３０Ｂにより保持されたアドレス値から、配置変更後先頭アドレス保持部３２Ｂにより保持されたアドレス値を差し引いた差分を出力する。この出力は、メインメモリ７０のアドレス配置変更に伴う、変更箇所以降のアドレスのオフセット分の符号を反転させた値に相当する。以下、この差分を「第２のオフセット値」と称する。
【００６３】
なお、配置変更前先頭アドレス保持部３０Ａ、３０Ｂ、配置変更後先頭アドレス保持部３２Ａ、３２Ｂ、減算器３４Ａ、３４Ｂからなる構成に代えて、配置変更前先頭アドレス保持部３０Ａ、３０Ｂと、オフセット値を保持する二つの保持部と、を備える構成としてもよい。
【００６４】
加算器３６Ａは、アクセスアドレス６０により規定されたアドレス値に、減算器３４Ａにより算出された第１のオフセット値を加算して出力する。加算器３６の出力は、メインメモリ７０の第１の配置変更（図６参照）が行われる前のアクセスアドレス６０を表すものとなる。
【００６５】
同様に、加算器３６Ｂは、アクセスアドレス６０により規定されたアドレス値に、減算器３４Ｂにより算出された第２のオフセット値を加算して出力する。加算器３６Ｂの出力は、メインメモリ７０の第２の配置変更（図６参照）が行われる前のアクセスアドレス６０を表すものとなる。
【００６６】
なお、図５では、第１実施例では表記していた変換後アドレス６０*の表記を省略したが、そのデータ構成は第１実施例と同様である。
【００６７】
比較器３８Ａは、アクセスアドレス６０が示すアドレス値が、配置変更前先頭アドレス保持部３０Ａが保持するアドレス値よりも大きいか否かを判定する。そして、例えば、アクセスアドレス６０が示すアドレス値が、配置変更前先頭アドレス保持部３０Ａが保持するアドレス値よりも大きい場合には値１を、それ以外の場合には値０を出力する。すなわち、比較器３８の出力は、アクセスアドレス６０によって読み出し指示がなされたメインメモリ７０のアドレスが、図６に示す第１の配置変更箇所よりも前であるか（；値０）、後であるか（；値１）を示すものである。
【００６８】
同様に、比較器３８Ｂは、アクセスアドレス６０が示すアドレス値が、配置変更前先頭アドレス保持部３０Ｂが保持するアドレス値よりも大きいか否かを判定する。そして、例えば、アクセスアドレス６０が示すアドレス値が、配置変更前先頭アドレス保持部３０Ｂが保持するアドレス値よりも大きい場合には値２を、それ以外の場合には値０を出力する。すなわち、比較器３８Ｂの出力は、アクセスアドレス６０によって読み出し指示がなされたメインメモリ７０のアドレスが、図６に示す第２の配置変更箇所よりも前であるか（；値０）、後であるか（；値２）を示すものである。
【００６９】
セレクタ４４には、比較器３８Ａ、３８Ｂの出力が入力され、入力値のうち最も大きい値を出力する。すなわち、比較器３８Ａが値０、比較器３８Ｂが値０を出力している場合は値０を、比較器３８Ａが値１、比較器３８Ｂが値０を出力している場合は値１を、比較器３８Ａが値１、比較器３８Ｂが値２を出力している場合は値２を、それぞれ出力する。
【００７０】
セレクタ４６は、被選択信号が三つ入力され、選択指示信号が少なくとも三値を取る３ウエイのセレクタである。セレクタ４６には、被選択信号として、アクセスアドレス６０のインデックス６０Ｂ、及び加算器３６Ａ、３６Ｂの出力が入力され、選択指示信号としてセレクタ４４の出力が入力される。セレクタ４６は、セレクタ４４の出力が値０である場合にインデックス６０Ｂを選択して出力し、セレクタ４４の出力が値１である場合に加算器３６Ａの出力を選択して出力し、セレクタ４４の出力が値２である場合に加算器３６Ｂの出力を選択して出力する。
【００７１】
第１実施例と同様の一致判定器５０には、セレクタ４４の出力と、セレクタ４６の出力によって特定されたキャッシュメモリ１０のアドレスに格納された１ラインのデータに含まれる配置変更フラグ１０Ａの値が入力される。一致判定器５０は、これらが一致する場合に値１を、一致しない場合に値０を出力する。
【００７２】
また、図示を省略したが、被選択信号として、アクセスアドレス６０のタグ６０Ａ、加算器３６Ａの出力に含まれるタグ、３６Ｂの出力に含まれるタグが入力され、選択指示信号としてセレクタ４４の出力が入力される３ウエイのセレクタを備えてもよい。これとキャッシュメモリ１０のタグ１０Ｂを比較することにより、第１実施例と同様にタグに関する一致判定を行うことができる（「一致判定器５２」の部分を参照）。
【００７３】
そして、アンド回路５４には、一致判定器５０、５２の出力が入力され、アンド回路５４は、これらの双方が値１である場合に値１を出力し、それ以外の場合に値０を出力するように構成すればよい。この場合、アンド回路５４の出力が値１である場合にキャッシュがヒットしたと判定され、キャッシュメモリ１０からプログラム又はデータが読み出される。
【００７４】
一方、アンド回路の出力が値１である場合には、キャッシュがミスしたと判定され、メインメモリ７０からプログラム又はデータが読み出される。この際に、所定の基準に基づき、メインメモリ７０から読み出されたプログラム又はデータはキャッシュメモリ１０に格納される。
【００７５】
以上説明した本実施例の制御装置２０を有するキャッシュシステム２によれば、メインメモリ７０のアドレス配置が二箇所で変更された前後において、キャッシュメモリ１０の使用態様がなるべく変動しないように制御することができる。この結果、処理タイミングが厳密に規定された制御装置等に、好適に適用することができる。
【００７６】
なお、三箇所以上でメインメモリ７０のアドレス配置が変更された場合においても、同様の原理によって、配置変更前先頭アドレス保持部３０、配置変更後先頭アドレス保持部３２、減算器３４、加算器３６、比較器３８からなる機能群を追加することにより、対応することが可能である。
【００７７】
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【００７８】
例えば、上記各実施例では、メインメモリ７０におけるアドレスの下位４バイトとキャッシュメモリ１０のアドレスが一対一の関係で対応付けられるものとしたが、他の対応関係に基づいてもよい。
【符号の説明】
【００７９】
１、２  キャッシュメモリシステム
１０    キャッシュメモリ
１０Ａ  配置変更フラグ
１０Ｂ  タグ
１０Ｃ  データ部
２０    制御装置
３０    配置変更前先頭アドレス保持部
３２    配置変更後先頭アドレス保持部
３４    減算器
３６    加算器
３８    比較器
４０、４２、４４、４６  セレクタ
５０、５２  一致判定器
５４    アンド回路
６０    アクセスアドレス
６０*   変換後アドレス
６０Ａ、６０*Ａ  タグ
６０Ｂ、６０*Ｂ  インデックス
７０    メインメモリ
【図１】
0005685963.tif 000002
【図２】
0005685963.tif 000003
【図３】
0005685963.tif 000004
【図４】
0005685963.tif 000005
【図５】
0005685963.tif 000006
【図６】
0005685963.tif 000007