(57)【特許請求の範囲】
【請求項１】
キャッシュの単位データを保持するキャッシュエントリー毎にアクセス順序を示す順序データを保持し、最も古い順序を示すキャッシュエントリーをリプレースするキャッシュメモリであって、
前記順序データを実際のアクセス順序に反して改変する改変手段と、
改変後の順序データに基づいてリプレースすべきキャッシュエントリーを選択する選択手段とを備え、
前記改変手段は、
プロセッサから命令によってアクセス可能なレジスタを有し、前記レジスタに格納されたアドレス情報としてプロセッサから指定されたアドレス範囲に属するデータを保持するキャッシュエントリーを特定する特定手段と、
特定されたキャッシュエントリーの順序データを実際のアクセス順序に反して最古化する最古化手段とを備え、
プロセッサがデータ転送命令を実行することによって前記レジスタにアドレス情報を格納し、
前記特定手段および最古化手段は、キャッシュメモリがプロセッサからアクセスされていない間に、前記キャッシュエントリーの特定および前記最古化を行なう
ことを特徴とするキャッシュメモリ。
【請求項２】
前記特定手段は、
前記アドレス範囲の先頭アドレスがラインデータの途中を指す場合、当該先頭アドレスを、前記アドレス範囲に含まれる先頭のラインを指すスタートラインアドレスに変換する第１変換手段と、
前記アドレス範囲の末尾アドレスがラインデータの途中を指す場合、当該末尾アドレスを、前記アドレス範囲に含まれる末尾のラインを指すエンドラインアドレスに変換する第２変換手段と、
前記スタートラインアドレスからエンドラインアドレスまでの各ラインアドレスに対応するデータを保持するキャッシュエントリーがあるか否かを判定する判定手段と
を備えることを特徴とする請求項１に記載のキャッシュメモリ。
【請求項３】
前記最古化手段は、アクセス順序が最も古いことを示す最古化フラグを順序データに付加する
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項４】
前記選択手段は、キャッシュミス時に、最古化フラグが付加されたキャッシュエントリーが存在する場合、そのキャッシュエントリーをリプレース対象として選択し、最古化フラグが付加されたキャッシュエントリーが存在しない場合、順序データに従ってリプレース対象とすべきキャッシュエントリーを選択する
ことを特徴とする請求項３に記載のキャッシュメモリ。
【請求項５】
前記キャッシュエントリーは、アクセス順序が古いか新しいかを示す１ビットの順序フラグを前記順序データとして有し、
前記選択手段は、最古化フラグが付加されたキャッシュエントリーが存在しない場合、順序フラグが古いことを示すキャッシュエントリーをリプレース対象として選択する
ことを特徴とする請求項４に記載のキャッシュメモリ。
【請求項６】
前記最古化手段は、前記特定手段により特定されたキャッシュエントリーのアクセス順序をＮ番目にするよう前記順序データを改変し、
前記Ｎは、アクセス順序が最も古い順であること示す番号である
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項７】
前記改変手段は、さらに、
アクセス順序の改変指示付きメモリアクセス命令が実行されたことを検出する命令検出手段を備え、
前記最古化手段は、さらに、当該命令によってアクセスがなされたキャッシュエントリーに対して順序データを書き替える
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項８】
前記キャッシュメモリは、
プロセッサからの出力されるアドレスを保持するアドレスレジスタと、
前記アドレスレジスタに保持されたアドレス中の上位アドレスとキャッシュエントリー中のタグアドレスとを比較することによって、ヒットするかどうかを判定する比較手段とを備え、
前記特定手段は、キャッシュメモリがプロセッサからアクセスされていない間に、前記レジスタに保持されたアドレス情報としてのアドレス範囲内のラインアドレスを前記アドレスレジスタに出力して比較手段に判定させることによって、アドレス範囲に属するキャッシュエントリーを特定する
ことを特徴とする請求項１に記載のキャッシュメモリ。
【請求項９】
キャッシュの単位データを保持するキャッシュエントリー毎にアクセス順序を示す順序データを保持し、最も古い順序を示すキャッシュエントリーをリプレースするキャッシュメモリの制御方法であって、
プロセッサがデータ転送命令を実行することによって、所定のレジスタにアドレス情報を格納する格納ステップと、
前記レジスタに格納されたアドレス情報としてプロセッサから指定されたアドレス範囲に属するデータを保持するキャッシュエントリーを特定する特定ステップと、
特定されたキャッシュエントリーの順序データを実際のアクセス順序に反して最古化する最古化ステップと、
最古化後の順序データに基づいてリプレースすべきキャッシュエントリーを選択する選択ステップと
を有し、
前記特定ステップおよび最古化ステップでは、キャッシュメモリがプロセッサからアクセスされていない間に、前記キャッシュエントリーの特定および前記最古化を行なう
ことを特徴とする制御方法。
【請求項１０】
前記改変手段は、
プロセッサから命令によってアクセス可能なレジスタで構成され、当該改変手段が行うべきキャッシュメモリの操作をコマンドとして保持するコマンド保持手段をさらに備え、
前記特定手段及び最古化手段は、前記コマンド保持手段に最古化を行うためのコマンドが格納されると、キャッシュメモリがプロセッサからアクセスされていない間に、最古化を行うことを特徴とする請求項１に記載のキャッシュメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサのメモリアクセスを高速化するためのキャッシュメモリおよびその制御方法に関する。
【背景技術】
【０００２】
近年のマイクロプロセッサでは、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、もしくはその近傍に配置し、データの一部をキャッシュメモリに記憶することによって、マイクロプロセッサのメモリアクセスを高速化させている。
【０００３】
上記コンピュータシステムでは、中央処理装置からキャッシュメモリへのリードアクセスまたはライトアクセスがミスヒットした場合に、主記憶装置から新たに読み出したデータの一部が、エントリ（登録項目）としてキャッシュメモリの空きブロックに格納される。この時、空きブロックが存在しない場合には、複数のブロックの何れか１つを選択し、選択されたブロックに格納されているエントリを主記憶装置に戻してブロック内を空き状態にし、この空きブロックに新たに読み出したデータを格納するエントリ置換処理が必要になる。上記エントリ置換処理では、最も以前に参照したデータを格納しているブロックを選択する手法、すなわち、ＬＲＵ（Ｌｅａｓｔ Ｒｅｃｅｎｔｌｙ Ｕｓｅｄ）デコード方式が一般的に採用されている。このＬＲＵデコード方式によってキャッシュメモリの使用効率が向上し、その結果、マイクロプロセッサの実行速度が向上する。
【０００４】
マイクロプロセッサが処理するプログラムの中には、アクセス頻度は少ないものの、ひとたび起動された場合には高速に処理しなければならないような特殊な処理と、アクセス頻度は多いが、実行速度がそれほど要求されないような処理とが存在する。
【０００５】
そこで、これに対応するために例えば特許文献１等の従来技術では、キャッシュメモリにフリーズ機能を設けている。フリーズ機能は、アクセスは少ないものの、ひとたび起動された場合には高速に処理しなければならないようなプログラムを予めキャッシュメモリ内にコピーしておき、その領域を書き換え禁止にしておく機能である。この機能を有することで、コンピュータシステムは、必要な時にプログラムをキャッシュメモリから読み出して実行することができ、これにより実行時間が短縮する。また、パージ機能は、アクセス頻度は多いが、実行速度がそれほど要求されないようなプログラムやデータをキャッシュメモリ内に保存しておくことなく、その領域を解放する機能である。この機能を有することで、キャッシュメモリに余裕ができ、優先度の高い他のプログラムやデータをキャッシュメモリに取り込むことができ、これにより、キャッシュメモリの利用効率が向上し、総合的な実行時間が短縮する。
【特許文献１】特開２００３−２００２２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、フリーズ機能もパージ機能も、アクセス頻度の高いデータをキャッシュメモリに留めたり、アクセス頻度の低いデータをキャッシュメモリから追い出すことを可能としているが、フリーズ機能及びパージ機能の制御のために複雑な回路を必要とするという問題がある。
【０００７】
本発明は、複雑な回路を設けることなく、アクセス頻度の低いデータを他のアクセス頻度の高いデータよりも優先的にリプレース対象とするキャッシュメモリを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため本発明のキャッシュメモリは、キャッシュの単位データを保持するキャッシュエントリー毎にアクセス順序を示す順序データを保持し、最も古い順序を示すキャッシュエントリーをリプレースするキャッシュメモリであって、前記順序データを実際のアクセス順序に反して改変する改変手段と、改変後の順序データに基づいてリプレースすべきキャッシュエントリーを選択する選択手段とを備える。
【０００９】
この構成によれば、例えば、アクセス頻度の低いデータの順序データをアクセス順序が最も古いように改変することにより、アクセス頻度の低いデータを他のアクセス頻度の高いデータよりも優先的にリプレース対象とすることができ、アクセス頻度の高いデータの順序データをアクセス順序が最新又は最も古くないことを示すように改変することにより、アクセス頻度の高いデータがリプレースされることを防止することができる。
【００１０】
ここで、前記改変手段は、プロセッサから命令によってアクセス可能なレジスタを有し、前記レジスタに格納されたアドレス情報としてプロセッサから指定されたアドレス範囲に属するデータを保持するキャッシュエントリーを特定する特定手段と、特定されたキャッシュエントリーの順序データを実際のアクセス順序に反して最古化する最古化手段とを備え、プロセッサがデータ転送命令を実行することによって前記レジスタにアドレス情報を格納し、前記特定手段および最古化手段は、キャッシュメモリがプロセッサからアクセスされていない間に、前記キャッシュエントリーの特定および前記最古化を行なう構成としてもよい。
【００１１】
この構成によれば、プロセッサからこれ以上読み出しも書き込みもなされないキャッシュエントリーのアクセス順序を最古にすれば、当該キャッシュエントリーは真っ先にリプレース対象として選択される。これによりアクセス頻度の低いデータがキャッシュメモリに居残ることによるキャッシュミスの誘発を低減することができる。
【００１２】
ここで、前記特定手段は、前記アドレス範囲の先頭アドレスがラインデータの途中を指す場合、当該先頭アドレスを、前記アドレス範囲に含まれる先頭のラインを指すスタートラインアドレスに変換する第１変換手段と、前記アドレス範囲の末尾アドレスがラインデータの途中を指す場合、当該末尾アドレスを、前記アドレス範囲に含まれる末尾のラインを指すエンドラインアドレスに変換する第２変換手段と、前記スタートラインアドレスからエンドラインアドレスまでの各ラインアドレスに対応するデータを保持するキャッシュエントリーがあるか否かを判定する判定手段とを備える構成としてもよい。
【００１３】
この構成によれば、プロセッサは、前記アドレス範囲として、キャッシュメモリのラインサイズ及びライン境界のアドレスとは無関係に任意のアドレスから任意のアドレス（又は任意のサイズ）を指定することができる。つまり、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、キャッシュメモリ管理のための負荷を解消することができる。
【００１４】
ここで、前記最古化手段は、アクセス順序が最も古いことを示す最古化フラグを順序データに付加する構成としてもよい。
【００１５】
この構成によれば、ＬＲＵ方式におけるアクセス順序を示す順序データを直接改変することなく、間接的にＷフラグを付加することによってアクセス順序を改変しているので、複雑なハードウェア回路を追加することなく実現することができる。
【００１６】
ここで、前記選択手段は、キャッシュミス時に、最古化フラグが付加されたキャッシュエントリーが存在する場合、そのキャッシュエントリーをリプレース対象として選択し、最古化フラグが付加されたキャッシュエントリーが存在しない場合、順序データに従ってリプレース対象とすべきキャッシュエントリーを選択する構成としてもよい。
【００１７】
ここで、前記キャッシュエントリーは、アクセス順序が古いか新しいかを示す１ビットの順序フラグを前記順序データとして有し、前記選択手段は、最古化フラグが付加されたキャッシュエントリーが存在しない場合、順序フラグが古いことを示すキャッシュエントリーをリプレース対象として選択する構成としてもよい。
【００１８】
この構成によれば、順序データが１ビットの順序フラグでよいので、アクセス順序データのデータ量が少ないこと及び更新が簡単であることからハードウェア規模を小さくすることができる。
【００１９】
ここで、前記最古化手段は、前記特定手段により特定されたキャッシュエントリーのアクセス順序をＮ番目にするよう前記順序データを改変し、前記Ｎは、アクセス順序が最も古い順であること示す番号であるように構成してもよい。
【００２０】
ここで、前記改変手段は、さらに、アクセス順序の改変指示付きメモリアクセス命令が実行されたことを検出する命令検出手段を備え、前記最古化手段は、さらに、当該命令によってアクセスがなされたキャッシュエントリーに対して順序データを書き替える書き換え手段とを備える構成としてもよい。
【００２１】
ここで、前記キャッシュメモリは、プロセッサからの出力されるアドレスを保持するアドレスレジスタと、前記アドレスレジスタに保持されたアドレス中の上位アドレスとキャッシュエントリー中のタグアドレスとを比較することによって、ヒットするかどうかを判定する比較手段とを備え、前記特定手段は、キャッシュメモリがプロセッサからアクセスされていない間に、前記レジスタに保持されたアドレス情報としてのアドレス範囲内のラインアドレスを前記アドレスレジスタに出力して比較手段に判定させることによって、アドレス範囲に属するキャッシュエントリーを特定する構成としてもよい。
【００２２】
また、本発明のキャッシュメモリの制御方法についても上記と同様の手段、作用を有する。
【発明の効果】
【００２３】
以上のように本発明のキャッシュメモリによれば、アクセス頻度の低いデータを他のアクセス頻度の高いデータよりも優先的にリプレース対象とすることができ、また、アクセス頻度の高いデータがリプレースされることを防止することができる。
【００２４】
例えば、プロセッサからこれ以上読み出しも書き込みもなされないキャッシュエントリーのアクセス順序を最古にすれば、当該キャッシュエントリーは真っ先にリプレース対象として選択される。これによりアクセス頻度の低いデータがキャッシュメモリに居残ることによるキャッシュミスの誘発を低減することができる。
【００２５】
また、プロセッサにおいてキャッシュメモリのラインサイズ及びライン境界のアドレスを管理する必要がないので、プロセッサにおけるキャッシュメモリ管理のための負荷を解消することができる。
【発明を実施するための最良の形態】
【００２６】
（実施の形態１）
＜全体構成＞
図１は、本発明の実施の形態１におけるプロセッサ１、キャッシュメモリ３、メモリ２を含むシステムの概略構成を示すブロック図である。同図のように、本発明のキャッシュメモリ３は、プロセッサ１およびメモリ２を有するシステムに備えられる。
【００２７】
キャッシュメモリ３は、いわゆるＬＲＵ方式によってアクセス順序の古いキャッシュエントリーをリプレースするリプレース制御を前提としている。本実施の形態のキャッシュメモリ３は、リプレース対象を決定するためのアクセス順序を示す順序データを、アクセス順序に反して改変することにより、アクセス頻度の低いデータを保持するキャッシュエントリーをリプレース対象としてキャッシュメモリから追い出すよう構成されている。具体的には、アクセス順序が最古であるとみなすことを示すウィークフラグＷをキャッシュエントリーに付加することによって、順序データを間接的に改変している。これにより順序データを直接改変する複雑な回路を不要としている。
【００２８】
＜キャッシュメモリの構成＞
以下、キャッシュメモリ３の具体例として、４ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。
【００２９】
図２は、キャッシュメモリ３の構成例を示すブロック図である。同図のように、キャッシュメモリ３は、アドレスレジスタ２０、メモリＩ／Ｆ２１、デコーダ３０、４つのウェイ３１ａ〜３１ｄ（以下ウェイ０〜３と略す）、４つの比較器３２ａ〜３２ｄ、４つのアンド回路３３ａ〜３３ｄ、オア回路３４、セレクタ３５、３６、デマルチプレクサ３７、制御部３８を備える。
【００３０】
アドレスレジスタ２０は、メモリ２へのアクセスアドレスを保持するレジスタである。このアクセスアドレスは３２ビットであるものとする。同図に示すように、アクセスアドレスは、最上位ビットから順に、２１ビットのタグアドレス、４ビットのセットインデックス（図中のＳＩ）、５ビットのワードインデックス（図中のＷＩ）を含む。ここで、タグアドレスはウェイにマッピングされるメモリ中の領域（そのサイズはセット数×ブロックである）を指す。この領域のサイズは、タグアドレスよりも下位のアドレスビット（Ａ１０〜Ａ０）で定まるサイズつまり２ｋバイトであり、１つのウェイのサイズでもある。セットインデックス（ＳＩ）はウェイ０〜３に跨る複数セットの１つを指す。このセット数は、セットインデックスが４ビットなので１６セットある。タグアドレスおよびセットインデックスで特定されるキャッシュエントリーは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックスよりも下位のアドレスビットで定まるサイズつまり１２８バイトである。１ワードを４バイトとすると、１ラインデータは３２ワードである。ワードインデックス（ＷＩ）は、ラインデータを構成する複数ワード中の１ワードを指す。アドレスレジスタ２０中の最下位２ビット（Ａ１、Ａ０）は、ワードアクセス時には無視される。
【００３１】
メモリＩ／Ｆ２１は、キャッシュメモリ３からメモリ２へのデータのライトバックや、メモリ２からキャッシュメモリ３へのデータのロード等、キャッシュメモリ３からメモリ２をアクセスするためのＩ／Ｆである。
【００３２】
デコーダ３０は、セットインデックスの４ビットをデコードし、４つのウェイ０〜３に跨る１６セット中の１つを選択する。
【００３３】
４つのウェイ０〜３は、同じ構成を有数する４つのウェイであり、４×２ｋバイトの容量を有する。各ウェイは、１６個のキャッシュエントリーを有する。
【００３４】
図３に１つのキャッシュエントリーにおける詳細なビット構成を示す。同図のように、１つのキャッシュエントリーは、バリッドフラグＶ０〜Ｖ３、２１ビットのタグ、１２８バイトのラインデータ、ウィークフラグＷ、ダーティフラグＤ０〜Ｄ３を有する。
【００３５】
タグは２１ビットのタグアドレスのコピーである。
ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の１２８バイトデータのコピーであり、３２バイトの４つのサブラインからなる。
【００３６】
バリッドフラグＶ０〜Ｖ３は、４つのサブラインに対応し、サブラインが有効か否かを示す。
【００３７】
ウィークフラグＷは、当該キャッシュエントリーのアクセス順序が最も古いものとみなすためのフラグである。つまり、Ｗ＝１のとき、プロセッサ１からは当該キャッシュエントリーにこれ以上読み出しも書き込みもなされないこと、あるいはアクセス頻度が低いことを意味する。また、Ｗ＝１のとき、キャッシュメモリ３においては、リプレース制御に関してアクセス順序が最古であると取り扱うこと、つまり、最弱（ウィーク）のキャシュエントリーであることを意味する。Ｗ＝０のとき、そうでないことを意味する。
【００３８】
ダーティフラグＤ０〜Ｄ３は、４つのサブラインに対応し、そのサブラインにプロセッサから書き込みがあったか否か、つまりサブライン中にキャッシュされたデータが存在するが書き込みによりメモリ中のデータと異なるためメモリに書き戻すことが必要か否かを示す。
【００３９】
比較器３２ａは、アドレスレジスタ２０中のタグアドレスと、セットインデックスにより選択されたセットに含まれる４つのタグ中のウェイ０のタグとが一致するか否かを比較する。比較器３２ｂ〜３２ｃについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。
【００４０】
アンド回路３３ａは、バリッドフラグと比較器３２ａの比較結果とが一致するか否かを比較する。この比較結果をｈ０とする。比較結果ｈ０が１である場合は、アドレスレジスタ２０中のタグアドレスおよびセットインデックスに対応するラインデータが存在すること、つまりウェイ０においてヒットしたことを意味する。比較結果ｈ０が０である場合は、ミスヒットしたことを意味する。アンド回路３３ｂ〜３３ｄについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。その比較結果ｈ１〜ｈ３は、ウェイ１〜３でヒットしたかミスしたかを意味する。
【００４１】
オア回路３４は、比較結果ｈ０〜ｈ３のオアをとる。このオアの結果をｈｉｔとする。ｈｉｔは、キャッシュメモリにヒットしたか否かを示す。
【００４２】
セレクタ３５は、選択されたセットにおけるウェイ０〜３のラインデータのうち、ヒットしたウェイのラインデータを選択する。
【００４３】
セレクタ３６は、セレクタ３５により選択された３２ワードのラインデータにうち、ワードインデックスに示される１ワードを選択する。
【００４４】
デマルチプレクサ３７は、キャッシュエントリーにデータを書き込む際に、ウェイ０〜３の１つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
【００４５】
制御部３８は、キャッシュメモリ３の全体の制御を行う。特に、Ｗフラグの設定とＷフラグに従うリプレース制御を行う。
【００４６】
＜制御部の構成＞
図４は、制御部３８の構成を示すブロック図である。同図のように、制御部３８は、リプレース部３９とＷフラグ設定部４０とを含む。
【００４７】
リプレース部３９は、キャッシュミスによるリプレースに際して、Ｗ＝１が設定されているキャッシュエントリーが存在すれば、当該キャッシュエントリーのアクセス順序が最も古いとみなしてリプレース対象として選択し、リプレースを行う。
【００４８】
Ｗフラグ設定部４０は、プロセッサ１からのコマンドに応じてウィークフラグＷを設定する。プロセッサ１は、もはや書き込みも読み出しもしないキャッシュエントリーについてウィークフラグＷの設定を指示するコマンドをキャッシュメモリ３に対して発行する。
【００４９】
＜Ｗフラグ設定部の構成＞
図５は、Ｗフラグ設定部４０の構成例を示すブロック図である。同図のようにＷフラグ設定部４０は、コマンドレジスタ４０１、スタートアドレスレジスタ４０２、サイズレジスタ４０３、加算器４０４、スタートアライナ４０５、エンドアライナ４０６、フラグ書換部４０７を備える。
【００５０】
コマンドレジスタ４０１は、プロセッサ１から直接アクセス可能なレジスタであり、プロセッサ１により書き込まれたＷフラグ設定コマンドを保持する。図６（ｃ）に、コマンドレジスタ４０１にコマンドを書き込む命令の一例を示す。この命令は、通常の転送命令（ｍｏｖ命令）であり、ソースオペランドとしてコマンドを、デスティネーションオペランドとしてコマンドレジスタ（ＣＲ）を指定している。図６（ｄ）に、コマンドの一例を示す。このコマンドは、Ｗフラグ設定コマンドを示す特定のコードである。Ｗフラグ設定コマンドは、スタートアドレスレジスタ４０２に保持されたスタートアドレスからサイズレジスタ４０３に保持されたサイズのアドレス範囲に対応するデータを保持するキャッシュエントリーに対して、Ｗフラグを設定することを指示するコマンドである。
【００５１】
スタートアドレスレジスタ４０２は、プロセッサ１から直接アクセス可能なレジスタであり、プロセッサ１により書き込まれたスタートアドレスを保持する。このスタートアドレスはＷフラグを設定すべきアドレス範囲の開始位置を示す。図６（ａ）に、スタートアドレスレジスタ４０２にスタートアドレスを書き込む命令の一例を示す。この命令も、図６（ｃ）と同様に通常の転送命令（ｍｏｖ命令）である。
【００５２】
サイズレジスタ４０３は、プロセッサ１から直接アクセス可能なレジスタであり、プロセッサ１により書き込まれたサイズを保持する。このサイズは、スタートアドレスからのアドレス範囲を示す。図６（ｂ）に、サイズレジスタ４０３にサイズを書き込む命令の一例を示す。この命令も、図６（ｃ）と同様に通常の転送命令（ｍｏｖ命令）である。なお、サイズの単位は、バイト数であっても、ライン数（キャッシュエントリー数）であってもよく、予め定められた単位であればよい。
【００５３】
加算器４０４は、スタートアドレスレジスタ４０２に保持されたスタートアドレスとサイズレジスタ４０３に保持されたサイズとを加算する。加算結果は、アドレス範囲の終了位置を指すエンドアドレスである。加算器４０４は、サイズがバイト数指定の場合はバイトアドレスとして加算し、サイズがライン数指定の場合はラインアドレスとして加算すればよい。
【００５４】
スタートアライナ４０５は、スタートアドレスをライン境界の位置に調整する。この調整によりプロセッサ１はラインサイズ及びライン境界とは無関係に任意のアドレスをスタートアドレスとして指定することができる。
【００５５】
エンドアライナ４０６は、エンドアドレスをライン境界の位置に調整する。この調整によりプロセッサ１はラインサイズ及びライン境界とは無関係に任意の大きさを上記サイズとして指定することができる。
【００５６】
図７に、スタートアライナ４０５及びエンドアライナ４０６の説明図を示す。同図において、プロセッサ１から指定されたスタートアドレスはラインＮの途中の任意の位置を指す。スタートアライナ４０５は、次のライン（Ｎ＋１）の先頭を指すよう調整し、調整後のアドレスをアラインスタートアドレスとして出力する。アラインスタートアドレスが指すラインをスタートラインと呼ぶ。
【００５７】
また、エンドアドレスはラインＭの途中の任意の位置を指す。エンドアライナ４０６は、直前のライン（Ｍ−１）の先頭を指すよう調整し、調整後のアドレスをアラインエンドアドレスとして出力する。アラインエンドアドレスが指すラインをエンドラインと呼ぶ。
【００５８】
この場合、スタートライン（ライン（Ｎ＋１））からエンドライン（ライン（Ｍ−１））までの各ライン（キャッシュエントリー）にＷフラグが設定されることになる。このように、スタートアライナ４０５及びエンドアライナ４０６がプロセッサ１から指定されたスタートアドレスからエンドアドレスまでのアドレス範囲よりも内側にアラインしているのは、ラインＮとラインＭの外側の部分にはプロセッサ１から書き込み又は読み出しが発生する可能性があるからである。
【００５９】
フラグ書換部４０７は、アラインスタートアドレスが指すラインからアラインエンドアドレスが指すラインまで（図７の例ではライン（Ｎ＋１）からライン（Ｍ−１）まで）、キャッシュメモリ３にエントリーされていればＷフラグを１に設定する。
【００６０】
＜Ｗフラグ設定処理＞
図８は、フラグ書換部４０７におけるＷフラグ設定処理の一例を示すフローチャートである。
【００６１】
フラグ書換部４０７は、コマンドレジスタ４０１にＷフラグ設定コマンドが保持されている場合、スタートラインからエンドラインまでの各ラインアドレスを順に出力しながらループ１の処理（Ｓ８２〜Ｓ８６）を行う。フラグ書換部４０７は、各ラインについて同じ処理を行うので、ここでは１ライン分の処理について説明する。
【００６２】
すなわち、フラグ書換部４０７は、キャッシュメモリ３がプロセッサ１からアクセスされていない間に、ラインアドレスをアドレスレジスタ２０に出力し（Ｓ８３）、アドレスレジスタ２０のタグアドレスとキャッシュエントリーのタグとを比較器３２ａ〜３２ｄに比較させ、ヒットするかどうかを判定する（Ｓ８４）。さらにフラグ書換部４０７は、ヒットした場合には、ヒットしたキャッシュエントリーに対してＷフラグを１にセットし（Ｓ８５）、ミスヒットした場合には、キャッシュメモリにエントリーされていないのでなにもしない。
【００６３】
これにより、スタートラインからエンドラインまでの各ラインについて、キャッシュメモリ３にエントリーされている場合には、Ｗフラグが１に設定される。
【００６４】
＜リプレース処理＞
図９は、リプレース部３９におけるリプレース処理を示すフローチャートである。同図においてリプレース部３９は、メモリアクセスがミスしたとき（ステップＳ９１）、セットインデックスにより選択されたセットにおける、４つウェイのウィークフラグＷを読み出し（ステップＳ９２）、４つのウィークフラグの論理和が１であるか否かつまりＷ＝１のウェイが存在すれか否かを判定する（ステップＳ９３）。Ｗ＝１のウェイが存在すると判定された場合、当該キャッシュエントリーのアクセス順序が最も古いとみなしてＷ＝１のウェイを１つ選択し（ステップＳ９４）、Ｗ＝１のウェイが存在しないと判定された場合、通常のＬＲＵ方式によりウェイを１つ選択する（ステップＳ９５）。このとき、ウィークフラグＷが１になっているウェイが複数存在する場合は、リプレース部３９はランダムに１つを選択する。
【００６５】
さらに、リプレース部３９は、当該セットにおける選択されたウェイのキャッシュエントリーを対象にリプレースし（ステップＳ９６）、リプレース後に当該キャッシュエントリーのウィークフラグＷを０初期化する（ステップＳ９７）。なお、このときバリッドフラグＶ、ダーティフラグＤは、それぞれ１、０に初期化される。
【００６６】
このように、Ｗ＝１のウェイが存在しない場合、リプレース対象は、通常のＬＲＵ方式により選択される。また、Ｗ＝１のウェイが存在する場合、リプレース対象は、Ｗ＝１のウェイのアクセス順序が最も古いものと取り扱われる結果、Ｗ＝１のウェイのキャッシュエントリーが選択される。これにより、アクセス頻度の低いＷ＝１のデータがキャッシュメモリに存在するために生じるキャッシュミスを低減することができる。
【００６７】
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、ウィークフラグＷ＝１のラインは、プロセッサからこれ以上読み出しも書き込みもなされないラインであり、そのアクセス順序が最古として取り扱われる結果、真っ先にリプレース対象として選択される。これによりアクセス頻度の低いデータによるキャッシュミスの誘発を低減することができる。
【００６８】
また、従来のＬＲＵ方式におけるアクセス順序を示す順序データを直接改変することなく、間接的にＷフラグを付加することによってアクセス順序を改変しているので、複雑なハードウェア回路を追加することなく、実現することができる。
【００６９】
＜変形例＞
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
（１）使用フラグＵを用いる擬似ＬＲＵの代わりに、４つのウェイのアクセス順序を示す順序データをキャッシュエントリー毎に保持及び更新して、従来通りのＬＲＵ方式でリプレース対象を選択する構成としてもよい。この場合も、Ｗ＝１のキャッシュエントリーを、
アクセス順序に関わらず、真っ先にリプレース対象として選択するようにすればよい。さらに、上記実施の形態では、Ｗフラグの付加により間接的に順序データを改変しているが、順序データを直接改変する構成としてもよい。
（２）上記実施の形態では、ウィークフラグＷによりアクセス順序が最古であることを示しているが、アクセス順序が最新又は最古でないことを示すものとしてもよい。この場合、リプレース部３９は、Ｗ＝１のキャッシュエントリーは最古でないとみなして、リプレース対象として選択せず、他のキャッシュエントリーを選択する構成とすればよい。最古でないことを示すウィークフラグＷを、アクセス頻度の高いデータあるいはアクセス頻度が中くらいのデータを保持するキャッシュエントリーに付加することにより、無駄リプレースを防止することができる。
（３）プロセッサ１が、ウィークフラグＷ＝１の設定とデータの書き込みとを命令する特別なストア命令を実行し、制御部３８は、さらに、特別なストア命令を検出する命令検出部と、当該ストア命令による書き込みの際にＷ＝１に設定するフラグ設定部とを備える構成としてもよい。
（４）上記実施の形態では、４ウェイ・セット・アソシエイティブのキャッシュメモリを例に説明したが、ウェイ数は、いくつでもよい。また、上記実施の形態では、セット数が１６である例を説明したが、セット数はいくつでもよい。
（５）上記実施の形態では、セット・アソシエイティブのキャッシュメモリを例に説明したが、フル・アソシエイティブ方式のキャッシュメモリであってもよい。
（６）上記実施の形態では、サブラインのサイズをラインのサイズの１／４としているが、１／２、１／８、１／１６等他のサイズでもよい。その場合、各キャッシュエントリーは、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持すればよい。
【００７０】
（実施の形態２）
実施の形態１では、通常のＬＲＵ方式を前提としてウィークフラグＷによってアクセス順序を最古化する構成について説明した。本実施の形態では、通常のＬＲＵ方式とは異なりアクセス順序を示す順序データを１ビットのフラグで表した擬似的なＬＲＵ方式と、ウィークフラグによる最古化とを行うキャッシュメモリについて説明する。
【００７１】
＜キャッシュメモリの構成＞
図１０は、本発明の実施の形態２におけるキャッシュメモリの構成を示すブロック図である。同図のキャッシュメモリは、図２の構成と比較して、ウェイ３１ａ〜３１ｄの代わりにウェイ１３１ａ〜１３１ｄを備える点と、制御部３８の代わりに制御部１３８を備える点とが異なっている。以下、同じ点は説明を省略して、異なる点を中心に説明する。
【００７２】
ウェイ１３１ａは、ウェイ３１ａと比べて、各キャッシュエントリー中に、使用フラグＵが追加されている点が異なる。ウェイ１３１ｂ〜１３１ｄも同様である。使用フラグＵは、４つのウェイ間でのアクセス順序示す順序データの代わりに設けられ、アクセス順序を１ビットで表現するフラグである。
【００７３】
図１１に、キャッシュエントリーのビット構成を示す。同図のビット構成は、図３と比較して、使用フラグＵが追加されている点が異なる。
【００７４】
使用フラグＵは、そのキャッシュエントリーにアクセスがあったか否かを示し、ＬＲＵ方式におけるミスヒットによるリプレースに際して４つのウェイのキャッシュエントリーにおけるアクセス順序データの代わりに用いられる。より正確には、使用フラグＵの１は、アクセスがあったことを、０はないことを意味する。ただし、１つのセット内の４つウェイの使用フラグが全て１になれば、０にリセットされる。別言すれば、使用フラグＵは、アクセスされた時期が古いか新しいか２つの相対的な状態を示す。つまり、使用フラグＵが１のキャッシュエントリーは、使用フラグが０のキャッシュエントリーよりも新しくアクセスされたことを意味する。
【００７５】
制御部１３８は、制御部３８と比べて、ＬＲＵ方式におけるアクセス順序情報の代わりに使用フラグＵを用いてリプレース制御する点が異なる。
【００７６】
＜制御部の構成＞
図１２は、制御部１３８の構成を示すブロック図である。同図の制御部１３８は、制御部３８と比較して、リプレース部３９の代わりにリプレース部１３９を備える点と、フラグ更新部４１が追加された点とが異なる。
【００７７】
リプレース部１３９は、使用フラグＵをアクセス順序とする擬似的なＬＲＵ方式によりキャッシュミス時にリプレース処理を行う。その際、リプレース部１３９は、ウィークフラグＷが１のキャッシュエントリーがあれば、最古のキャッシュエントリーとして扱い、真っ先にリプレース対象として選択する。
【００７８】
フラグ更新部４１は、キャッシュメモリがアクセスされたとき使用フラグＵの更新処理を行う。
【００７９】
＜使用フラグＵの説明＞
図１３は、リプレース部１３９による使用フラグの更新例を示す。同図の上段、中断、下段は、ウェイ０〜３に跨るセットＮを構成する４つのウェイのキャッシュエントリーを示している。４つのキャッシュエントリー右端の１又は０は、それぞれ使用フラグの値である。この４つの使用フラグＵをＵ０〜Ｕ３と記す。
【００８０】
同図上段では（Ｕ０〜Ｕ３）＝（１、０、１、０）であるので、ウェイ０、２のキャッシュエントリーはアクセスがあったことを、ウェイ１、３のキャッシュエントリーはアクセスがないことを意味する。
【００８１】
この状態で、メモリアクセスがセットＮ内のウェイ１のキャッシュエントリーにヒットした場合、同図中段に示すように、（Ｕ０〜Ｕ３）＝（１、１、１、０）に更新される。つまり、実線に示すようにウェイ１の使用フラグＵ１が０から１に更新される。
【００８２】
さらに、同図中段の状態で、メモリアクセスがセットＮ内のウェイ３のキャッシュエントリーにヒットした場合、同図下断に示すように、（Ｕ０〜Ｕ３）＝（０、０、０、１）に更新される。つまり、実線に示すようにウェイ３の使用フラグＵ１が０から１に更新される。加えて、破線に示すようにウェイ３以外の使用フラグＵ０〜Ｕ２が１から０に更新される。これにより、ウェイ３のキャシュエントリーが、ウェイ０〜２の各キャッシュエントリーよりも新しくアクセスされたことを意味することになる。
【００８３】
リプレース部１３９は、キャッシュミス時にＷ＝１のキャッシュエントリーが存在しなければ、使用フラグに基づいてリプレース対象のキャッシュエントリーを決定してリプレースを行う。例えば、リプレース部１３９は、図５上段では、ウェイ１とウェイ３の何れかをリプレース対象と決定し、図５中段ではウェイ３をリプレース対象と決定し、図５下段ではウェイ０〜２の何れかをリプレース対象と決定する。
【００８４】
＜ウィークフラグＷの説明＞
図１４（ａ）ウィークフラグが存在しないと仮定した場合の比較例であり、キャッシュエントリーがリプレースされる様子を示す図である。同図においても、図１３と同様にウェイ０〜３に跨るセットＮを構成する４つのキャッシュエントリーを示している。、４つのキャッシュエントリー右端の１又は０は、それぞれ使用フラグの値である。また、データＥのみアクセス頻度の低いデータを、データＡ、Ｂ、Ｃ、Ｄはアクセス頻度の高いデータとする。
【００８５】
同図（ａ）の第１段目の状態で、プロセッサ１がデータＥにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、Ｕ＝０のキャッシュエントリーの中からアクセス頻度の高いデータＣのキャッシュエントリーがアクセス頻度の低いデータＥにリプレースされ、第２段目の状態となる。
【００８６】
第２段目の状態で、プロセッサ１がデータＣにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、Ｕ＝０のキャッシュエントリーであるアクセス頻度の高いデータＤのキャッシュエントリーがアクセス頻度の高いデータＣにリプレースされ、第３段目の状態となる。
【００８７】
第３段目の状態で、プロセッサ１がデータＤにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、アクセス頻度の高いデータＣのキャッシュエントリーがアクセス頻度の高いデータＤにリプレースされ、第３段目の状態となる。
【００８８】
同様に、第４段目でも、使用頻度の低いデータＥはリプレース対象として選択されないで、キャッシュメモリーに残っている。
【００８９】
第５段目の状態で、使用頻度の低いデータＥは最も古い（Ｕ＝０）であることから、リプレース対象として選択されて、追い出される。
【００９０】
このように、擬似ＬＲＵ方式において（通常のＬＲＵ方式においても）、アクセス頻度の低いデータＥによって、４ウェイの場合は最悪４回のキャッシュミスを誘発する場合がある。
【００９１】
図１４（ｂ）は、リプレース処理におけるウィークフラグＷの役割を示す説明図である。
【００９２】
同図（ｂ）の第１段目の状態（同図（ａ）の第１段目と同じ）で、プロセッサ１がデータＥにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、Ｕ＝０のキャッシュエントリーの中からアクセス頻度の高いデータＣのキャッシュエントリーがアクセス頻度の低いデータＥにリプレースされる。このとき、プロセッサ１は、データＥのキャッシュエントリーにウィークフラグＷを１に設定するものとする。これにより、次のキャッシュミス時にデータＥのキャッシュエントリーが真っ先に追い出され、第２段目の状態となる。
【００９３】
第２段目の状態で、プロセッサ１がデータＣにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、Ｗ＝１のキャッシュエントリーであるアクセス頻度の低いデータＥのキャッシュエントリーがリプレース対象として選択され、アクセス頻度の高いデータＣにリプレースされ、第３段目の状態となる。
【００９４】
このように、ウィークフラグＷを設けることにより、アクセス頻度の低いデータによるキャッシュミスの誘発を低減することができる。
【００９５】
＜Ｕフラグ更新処理＞
図１５は、フラグ更新部４１におけるＵフラグ更新処理を示すフローチャートである。
同図では、バリッドフラグが０（無効）であるキャッシュエントリーの使用フラグＵは０に初期化されているものとする。
【００９６】
同図において、フラグ更新部４１は、キャッシュヒットしたとき（ステップＳ６１）、セットインデックスにより選択されたセットにおけるヒットしたウェイの使用フラグＵを１にセットし（ステップＳ６２）、そのセット内の他のウェイの使用フラグＵを読み出し（ステップＳ６３）、読み出した使用フラグＵが全て１であるか否かを判定し（ステップＳ６４）、全て１でなければ終了し、全て１であれば他のウェイの全ての使用フラグＵを０にリセットする（ステップＳ６５）。
【００９７】
このようにしてフラグ更新部４１は、図１３、図１４（ａ）（ｂ）に示した更新例のように、使用フラグＵを更新する。
【００９８】
＜リプレース処理＞
図１６は、リプレース部１３９におけるリプレース処理を示すフローチャートである。同図においてリプレース部１３９は、メモリアクセスがミスしたとき（ステップＳ９１）、セットインデックスにより選択されたセットにおける、４つウェイの使用フラグＵ及びウィークフラグＷを読み出し（ステップＳ９２）、Ｗ＝１のウェイが存在するか否かを判定する（ステップＳ９３）。Ｗ＝１のウェイが存在しないと判定された場合、Ｕ＝０のウェイを１つ選択する（ステップＳ９４）。このとき、使用フラグＵが０になっているウェイが複数存在する場合は、リプレース部１３９はランダムに１つを選択する。また、Ｗ＝１のウェイが存在すると判定された場合、Ｕフラグの値に関わらずＷ＝１のウェイを１つ選択する（ステップＳ９５）。このとき、ウィークフラグＷが１になっているウェイが複数存在する場合は、リプレース部１３９はランダムに１つを選択する。
【００９９】
さらに、リプレース部１３９は、当該セットにおける選択されたウェイのキャッシュエントリーを対象にリプレースし（ステップＳ９６）、リプレース後に当該キャッシュエントリーの使用フラグＵを１に、ウィークフラグＷを０初期化する（ステップＳ９７）。なお、このときバリッドフラグＶ、ダーティフラグＤは、それぞれ１、０に初期化される。
【０１００】
このように、Ｗ＝１のウェイが存在しない場合、リプレース対象は、使用フラグＵが０のキャッシュエントリーの中から１つ選択される。
【０１０１】
また、Ｗ＝１のウェイが存在する場合、リプレース対象は、使用フラグＵが０であると１であるとを問わず、Ｗ＝１のウェイのキャッシュエントリーから１つ選択される。これにより図１４（ａ）（ｂ）に示したように、アクセス頻度の低いデータがキャッシュメモリに残ることによるキャッシュミスの誘発を低減することができる。
【０１０２】
以上説明してきたように、本実施の形態におけるキャッシュメモリによれば、従来のＬＲＵ方式におけるアクセス順序を示すデータの代わりに１ビットの使用フラグを用いる擬似ＬＲＵ方式を採用することにより、アクセス順序データとして１ビットのフラグでよいので、アクセス順序データのデータ量が少ないこと及び更新が簡単であることからハードウェア規模を小さくすることができる。
【０１０３】
また、これ以上使用されないキャッシュエントリーにＷ＝１が設定され、Ｗ＝１のキャッシュエントリーが真っ先にリプレース対象として選択されるので、アクセス頻度の低いデータがキャッシュメモリに残ることによるキャッシュミスの誘発を低減することができる。
【０１０４】
＜変形例＞
（１）  上記各実施形態において、プロセッサ１が、ウィークフラグＷを１に設定しながらデータをアクセスするロード／ストア命令（以下Ｗ−Ｌ／Ｓ命令と略す）を実行し、制御部３８又は制御部１３８は、Ｗ−Ｌ／Ｓ命令の実行を検出したときに、当該Ｗ−Ｌ／Ｓ命令によるアクセスの直後にＷフラグを１に設定する構成としてもよい。図１７に、その場合に制御部３８又は１３８に備えられるＷフラグ設定部４０ａの構成例を示す。
同図においてＷフラグ設定部４０ａは、ＬＤ／ＳＴ命令検出部４１０、ウィーク指示検出部４１１、アンド回路４１２、フラグ書き換え部４１３とを備える。
ＬＤ／ＳＴ命令検出部４１０は、プロセッサ１がロード／ストア命令を実行されたことを検出する。ウィーク指示検出部４１１は、ロード／ストア命令の実行時にプロセッサ１からウィーク指示が出力されているかどうか検出する。ウィーク指示は、例えば、プロセッサ１がからの信号線により検出することができる。アンド回路４１２は、ロード／ストア命令の実行が検出され、かつ、ウィーク指示が検出されたとき、フラグ書き換え部４１３に、Ｗ−Ｌ／Ｓ命令の検出を通知する。フラグ書き換え部４１３は、Ｗ−Ｌ／Ｓ命令が検出されたとき、当該Ｗ−Ｌ／Ｓ命令によりアクセスされたデータを保持するキャッシュエントリーに対してウィークフラグＷを１に設定する。
（２）  また、上記（１）においてＷフラグ設定部４０ａは、実施の形態１における制御部３８に設けられる場合には、ウィークフラグＷの代わりに、アクセス順序を示す順序データを直接に改変する構成としてもよい。その場合、ウィーク指示検出部４１１は、設定すべきアクセス順序の指定付きロード／ストア命令を実行するプロセッサ１から、設定すべきアクセス順序を示す番号（Ｎ番目）を検出する。Ｎ番目は、４ウェイセットアソシエイティブの場合１番から４番（又は０から３）の何れかでよい。例えば、プロセッサ１は、アクセス頻度の低いデータに対しては最古のＮ＝４とし、アクセス頻度の低いデータに対してはＮ＝１又は２番などを指定することができる。フラグ書き換え部４１３は、アクセス順序の指定付きロード／ストア命令によりアクセスされたデータを保持するキャッシュエントリーの順序データをＮ番に改変する。このように、順序データを直接に任意のＮ番に改変する構成としてもよい。
（３）図５に示したＷフラグ設定部４０の代わりに図１８に示すＷフラグ設定部４０ｂを備える構成としてもよい。Ｗフラグ設定部４０ｂは、Ｗフラグ設定部４０に対して比較器４０８を追加し、フラグ書換部４０７の代わりにフラグ書換部４０７ａを備える構成となっている。比較器４０８は、加算器４０４から出力されるエンドラインのラインアドレスと、ウィークフラグ設定のためにフラグ書換部４０７ａから出力され、タグアドレスレジスタ２０に保持されたラインアドレスとが一致するか否かを判定する。この比較器４０８は、図８に示したＷフラグ設定処理中のループ１におけるエンドアドレスの判定に用いられる。すなわち、フラグ書換部４０７ａは、比較器４０８が一致すると判定した場合、ウィークフラグの設定を終了する。
（４）図６（ａ）（ｂ）（ｃ）に示した各命令は、コンパイラによりプログラム中に挿入してもよい。その際、コンパイラは、例えば配列データの書き込みや、圧縮動画データをデコードする際のブロックデータの書き込み等、これ以上書き込みをしないプログラム位置に、上記各命令を挿入するようにすればよい。
【産業上の利用可能性】
【０１０５】
本発明は、メモリアクセスを高速化するためのキャッシュメモリに適しており、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適している。
【図面の簡単な説明】
【０１０６】
【図１】本発明の実施の形態１におけるプロセッサ、キャッシュメモリ、メモリを含むシステムの概略構成を示すブロック図である。
【図２】キャッシュメモリの構成例を示すブロック図である。
【図３】キャッシュエントリーの詳細なビット構成を示す。
【図４】制御部の構成を示すブロック図である。
【図５】Ｗフラグ設定部の構成例を示すブロック図である。
【図６Ａ】スタートアドレスレジスタにスタートアドレスを書き込む命令の一例を示す。
【図６Ｂ】サイズレジスタにサイズを書き込む命令の一例を示す。
【図６Ｃ】コマンドレジスタにコマンドを書き込む命令の一例を示す。
【図６Ｄ】コマンドの一例を示す。
【図７】スタートアライナ及びエンドアライナの説明図を示す。
【図８】フラグ書換部におけるＷフラグ設定処理の示すフローチャートである。
【図９】リプレース部におけるリプレース処理を示すフローチャートである。
【図１０】本発明の実施の形態２におけるキャッシュメモリの構成を示すブロック図である。
【図１１】キャッシュエントリーのビット構成を示す。
【図１２】制御部の構成を示すブロック図である。
【図１３】リプレース部による使用フラグの更新例を示す。
【図１４Ａ】ウィークフラグが存在しない場合にキャッシュエントリーがリプレースされる様子を示す図である。
【図１４Ｂ】リプレース処理におけるウィークフラグＷの役割を示す説明図である。
【図１５】フラグ更新部におけるＵフラグ更新処理を示すフローチャートである。
【図１６】リプレース部におけるリプレース処理を示すフローチャートである。
【図１７】Ｗフラグ設定部の他の構成例を示す図である。
【図１８】Ｗフラグ設定部のさらに他の構成例を示す図である。
【符号の説明】
【０１０７】
１    プロセッサ
２    メモリ
３    キャッシュメモリ
２０    アドレスレジスタ
２０    タグアドレスレジスタ
２１    メモリＩ／Ｆ
３０    デコーダ
３１ａ〜３１ｄ  ウェイ
３２ａ〜３２ｄ  比較器
３３ａ〜３３ｄ  アンド回路
３４    オア回路
３５    セレクタ
３６    セレクタ
３７    デマルチプレクサ
３８    制御部
３９    リプレース部
４０    Ｗフラグ設定部
４１    フラグ更新部
１３１ａ〜１３１ｄ  ウェイ
１３８    制御部
１３９    リプレース部
４０１    コマンドレジスタ
４０２    スタートアドレスレジスタ
４０３    サイズレジスタ
４０４    加算器
４０５    スタートアライナ
４０６    エンドアライナ
４０７    フラグ書換部
４０７ａ  フラグ書換部
４０８    比較器
４１０    ＬＤ／ＳＴ命令検出部
４１１    ウィーク指示検出部
４１２    アンド回路
４１３    書き換え部
【図１】
0004008946.tif 000002
【図２】
0004008946.tif 000003
【図３】
0004008946.tif 000004
【図４】
0004008946.tif 000005
【図５】
0004008946.tif 000006
【図６Ａ】
0004008946.tif 000007
【図６Ｂ】
0004008946.tif 000008
【図６Ｃ】
0004008946.tif 000009
【図６Ｄ】
0004008946.tif 000010
【図７】
0004008946.tif 000011
【図８】
0004008946.tif 000012
【図９】
0004008946.tif 000013
【図１０】
0004008946.tif 000014
【図１１】
0004008946.tif 000015
【図１２】
0004008946.tif 000016
【図１３】
0004008946.tif 000017
【図１４Ａ】
0004008946.tif 000018
【図１４Ｂ】
0004008946.tif 000019
【図１５】
0004008946.tif 000020
【図１６】
0004008946.tif 000021
【図１７】
0004008946.tif 000022
【図１８】
0004008946.tif 000023