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