(57)【特許請求の範囲】
【請求項１】
プロセッサとメモリとの間に設けられるキャッシュメモリと、
前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とを備え、
前記キャッシュメモリは、
前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
前記転送及び属性制御手段は、
前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
を備え、
前記コマンドエントリ部は、操作の対象となるアドレスの指定方法と操作のタイミングのうち少なくとも一方が異なる複数の種類のコマンドを前記プロセッサから与えられ、
前記操作要求部は、各コマンドに応じた操作要求を、コマンドの種類によって予め設定された優先順位に基づいて選択し、前記キャッシュメモリに要求する
ことを特徴とするキャッシュメモリシステム。
【請求項２】
前記キャッシュメモリは、キャッシュデータの管理単位であるキャッシュエントリに対応付けて、
そのキャッシュエントリに保持されるキャッシュデータに対応するメモリアドレスの上位部を示すタグを保持するタグ保持部と、
そのキャッシュエントリが有効か否かを示すバリッドフラグと、そのキャッシュエントリに書き込み操作があったか否かを示すダーティフラグと、そのキャッシュエントリのアクセス順序を強制的に最古とすることを示すウィークフラグとを保持するフラグ保持部と
を有し、
前記転送及び属性制御手段からの要求に応じて、
指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへ前記指定されたアドレスに対応するデータをロードし、タグを設定してバリッドフラグをセットするフィル操作、
指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへデータをロードすることなくタグを設定してバリッドフラグをセットするタッチ操作、
指定されるアドレスにヒットするキャッシュエントリがありかつダーティフラグがセットされている場合に、そのキャッシュエントリのデータをメモリへセーブしてダーティフラグをリセットするライトバック操作、
指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのデータをダーティフラグの状態に応じてメモリへセーブすることなくバリッドフラグをリセットする無効化操作、
指定されるアドレスにヒットするキャッシュエントリがある場合に、ダーティフラグがセットされていればそのキャッシュエントリのデータをメモリへセーブしてダーティフラグ及びバリッドフラグをリセットし、ダーティフラグがリセットされていればそのキャッシュエントリのバリッドフラグのリセットのみを行うライトバック兼無効化操作、及び
指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのウィークフラグをセットする最古化操作
の中の一つを実行する
ことを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、
前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求する
ことを特徴とする請求項１または２に記載のキャッシュメモリシステム。
【請求項４】
前記転送及び属性制御手段は、さらに、
前記アドレス範囲の先頭及び末尾を、前記キャッシュメモリにおけるキャッシュデータの管理単位であるキャッシュエントリの先頭データを示すように調整するアドレス調整部を有し、
前記操作要求部は、前記調整後のアドレス範囲に含まれる複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求する
ことを特徴とする請求項３に記載のキャッシュメモリシステム。
【請求項５】
前記転送及び属性制御手段は、さらに、
複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部と、
前記保持された複数のコマンドの中から一つを選択するコマンド選択部と
を有し、
前記操作要求部は、前記選択されたコマンドに対応するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を逐次要求する
ことを特徴とする請求項３または４に記載のキャッシュメモリシステム。
【請求項６】
プロセッサとメモリとの間に設けられるキャッシュメモリと、
前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とを備え、
前記キャッシュメモリは、
前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
前記転送及び属性制御手段は、
前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
を備え、
前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、
前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
前記転送及び属性制御手段は、さらに、
複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部と、
前記保持された複数のコマンドの中から一つを選択するコマンド選択部と
を有し、
前記操作要求部は、前記選択されたコマンドに対応するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を逐次要求し、
前記コマンド選択部は、前記選択されたコマンドについて全ての要求がなされる前に、他のコマンドを選択し、
前記操作要求部は、元のコマンドが再び選択された場合にそのコマンドについてまだ要求していないアドレスに対する操作を逐次要求する
ことを特徴とするキャッシュメモリシステム。
【請求項７】
プロセッサとメモリとの間に設けられるキャッシュメモリと、
前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とを備え、
前記キャッシュメモリは、
前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
前記転送及び属性制御手段は、
前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
を備え、
前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、
前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
前記転送及び属性制御手段は、さらに、
次に予定される要求に関して定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断する実行判断部と、
肯定判断がなされると、前記予測アドレスに所定のオフセット値を加算又は減算することによって実効アドレスを生成する実効アドレス生成部と
を有し、
前記操作要求部は、前記生成された実効アドレスに対する前記操作を要求する
ことを特徴とするキャッシュメモリシステム。
【請求項８】
前記転送及び属性制御手段は、さらに、
複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部を有し、
前記実行判断部は、前記保持された各コマンドについて、そのコマンドに対応する予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断し、
前記転送及び属性制御手段は、さらに、
肯定判断がなされたコマンドの中から一つを選択するコマンド選択部を有し、
前記実効アドレス生成部は、前記選択されたコマンドに対応する予測アドレスに所定値を加算又は減算することによって実効アドレスを生成し、
前記操作要求部は、前記生成された実効アドレスに対する前記選択されたコマンドによって示される操作を要求する
ことを特徴とする請求項７に記載のキャッシュメモリシステム。
【請求項９】
前記転送及び属性制御手段は、さらに、
前記キャッシュメモリにおけるキャッシュデータの管理単位である各キャッシュエントリを指定するアドレスを逐次出力するアドレス出力部を有し、
前記操作要求部は、前記出力されたアドレスによって指定されるキャッシュエントリを含む一つ以上のキャッシュエントリに対する何れかの操作要求を保持する要求保持手段を備え、操作要求を保持している間は自発的に操作要求をし続ける
ことを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項１０】
前記操作要求部は、前記キャッシュメモリに要求する操作がライトバック操作であり、
前記キャッシュメモリは、前記要求に応じてライトバック操作を実行する
ことを特徴とする請求項１または９に記載のキャッシュメモリシステム。
【請求項１１】
プロセッサとメモリとの間に設けられるキャッシュメモリと、
前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とを備え、
前記キャッシュメモリは、
前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御部を備え、
前記転送及び属性制御手段は、
前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、
前記アドレスに対する前記コマンドによって示される操作を前記キャッシュメモリに要求する操作要求部と
を備え、
前記コマンドエントリ部は、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令と同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次操作することを示す逐次操作コマンドのうちの少なくとも一つを前記プロセッサから与えられ、
前記操作要求部は、各コマンドに応じた操作要求を予め設定された優先順位に基づいて選択を行い、前記キャッシュメモリに要求する
ことを特徴とするキャッシュメモリシステム。
【請求項１２】
前記操作要求部は、各コマンドに応じた操作を、前記コマンドの順に優先して、前記キャッシュメモリに要求する
ことを特徴とする請求項１１に記載のキャッシュメモリシステム。
【請求項１３】
プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御ステップと、
前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
を含み、
前記取得ステップでは、前記プロセッサから、操作の対象となるアドレスの指定方法と操作のタイミングのうち少なくとも一方が異なる複数の種類のコマンドを取得し、
前記操作要求ステップでは、各コマンドに応じた操作要求を、コマンドの種類によって予め設定された優先順位に基づいて選択し、前記キャッシュメモリに要求する
ことを特徴とする制御方法。
【請求項１４】
前記コマンドエントリ部は、
予め定められたメモリアドレスに割り当てられ、前記プロセッサが前記命令を実行することによって、前記コマンドを表すデータを設定されるレジスタを備え、
前記操作要求部は、前記レジスタに設定されたコマンドによって示される操作を前記キャッシュメモリの制御部に要求する
ことを特徴とする請求項１に記載のキャッシュメモリシステム。
【請求項１５】
プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御ステップと、
前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
を含み、
前記取得ステップでは、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を取得し、
前記操作要求ステップでは、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
前記制御方法は、さらに、
複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを、前記転送及び属性制御手段にて保持するコマンド保持ステップと、
前記保持された複数のコマンドの中から一つを選択するコマンド選択ステップと
を含み、
前記操作要求ステップでは、前記選択されたコマンドに対応するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに逐次要求し、
前記コマンド選択ステップでは、前記選択されたコマンドについて全ての要求がなされる前に、他のコマンドを選択し、
前記操作要求ステップでは、元のコマンドが再び選択された場合にそのコマンドについてまだ要求していないアドレスに対する操作を逐次要求する
ことを特徴とする制御方法。
【請求項１６】
プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御ステップと、
前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
を含み、
前記取得ステップでは、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を取得し、
前記操作要求ステップでは、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求し、
前記制御方法は、さらに、
次に予定される要求に関して定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを、前記転送及び属性制御手段にて判断する実行判断ステップと、
肯定判断がなされると、前記予測アドレスに所定のオフセット値を加算又は減算することによって実効アドレスを生成する実効アドレス生成ステップと
を含み、
前記操作要求ステップでは、前記生成された実効アドレスに対する前記操作を要求する
ことを特徴とする制御方法。
【請求項１７】
プロセッサとメモリとの間に設けられるキャッシュメモリと前記キャッシュメモリに対してキャッシュデータの転送と属性操作とを要求する転送及び属性制御手段とからなるキャッシュメモリシステムを制御する制御方法であって、
前記キャッシュメモリで、前記プロセッサからのメモリアクセス及び前記転送及び属性制御手段からの要求に応じて、キャッシュデータの転送と属性操作との実行を制御する制御ステップと、
前記転送及び属性制御手段で、前記プロセッサから、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを取得する取得ステップと、
前記アドレスに対する前記コマンドによって示される操作を、前記転送及び属性制御手段から前記キャッシュメモリに要求する操作要求ステップと
を含み、
前記取得ステップでは、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令と同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次操作することを示す逐次操作コマンドのうちの少なくとも一つを前記プロセッサから取得し、
前記操作要求ステップでは、各コマンドに応じた操作要求を予め設定された優先順位に基づいて選択を行い、前記キャッシュメモリに要求する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリシステム及びその制御方法に関し、特にキャッシュメモリシステムのソフトウェアによる制御性を向上する技術に関する。
【背景技術】
【０００２】
近年のマイクロプロセッサでは、例えば、ＳＲＡＭ（Static Random Access Memory）等から成る小容量で高速なキャッシュメモリをマイクロプロセッサの内部、もしくはその近傍に配置し、データの一部をキャッシュメモリに記憶することによって、マイクロプロセッサのメモリアクセスを高速化させている。
【０００３】
従来、キャッシュの効率向上（ヒット率向上、キャッシュミスレイテンシ低減）を指向した種々の技術が知られている。そのような技術の一つに、キャッシュミスが発生する前に、近い未来に使用するデータを予めキャッシュにフィルするプリロード（又はプリフェッチ）がある（例えば特許文献１）。この技術を用いて、プリフェッチ命令により指定したアドレスを含むラインをキャッシュにロードすることにより、キャッシュミスの低減を図ることができる。
【特許文献１】特開平７−２９５８８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術によれば、メモリへのアクセスの状況をハードウェアによって監視し、ハードウェアによって自律的にキャッシュ操作をしようとすると、正確な予測が困難であるためにかえって無駄な転送が発生することがある。このことは、上記従来の技術に限らず、キャッシュの効率向上を指向した種々の技術において同様である。そのようなハードウェアによる自律的な制御によるキャッシュ効率の限界を打開する一つのアプローチとして、ソフトウェアによる制御を援用することが考えられる。
【０００５】
本発明は、上記の問題に鑑みてなされたものであり、ソフトウェアからの制御を積極的に受け入れて処理を行うための好ましい構成を持ったキャッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明のキャッシュメモリシステムは、プロセッサとメモリとの間に設けられるキャッシュメモリと、前記キャッシュメモリを制御する転送及び属性制御手段とを備え、前記転送及び属性制御手段は、前記プロセッサが予め定められた命令を実行することによって、キャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられるコマンドエントリ部と、前記アドレスに対する前記コマンドによって示される操作を、前記キャッシュメモリに要求する操作要求部とを備える。
【０００７】
また、前記コマンドエントリ部は、さらに、前記プロセッサから前記コマンドに対応してアドレス範囲を与えられ、前記操作要求部は、前記アドレス範囲に属する複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求してもよい。
【０００８】
この構成によれば、前記予め定められた命令を前記プロセッサに実行させることによって、ソフトウェアから、前記キャッシュデータの転送及び属性操作を要求できるので、ソフトウェアからの制御を積極的に受け入れて処理を行うための好ましい構成を持ったキャッシュメモリシステムが得られる。
【０００９】
また、前記キャッシュメモリは、キャッシュデータの管理単位であるキャッシュエントリに対応付けて、そのキャッシュエントリに保持されるキャッシュデータに対応するメモリアドレスの上位部を示すタグを保持するタグ保持部と、そのキャッシュエントリが有効か否かを示すバリッドフラグと、そのキャッシュエントリに書き込み操作があったか否かを示すダーティフラグと、そのキャッシュエントリがアクセスされた時期を他のどのキャッシュエントリがアクセスされた時期よりも古いとみなすことを示すウィークフラグとを保持するフラグ保持部とを有し、前記転送及び属性制御手段からの要求に応じて、指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへ前記指定されたアドレスに対応するデータをロードし、タグを設定してバリッドフラグをセットするフィル操作、指定されるアドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへデータをロードすることなくタグを設定してバリッドフラグをセットするタッチ操作、指定されるアドレスにヒットするキャッシュエントリがありかつダーティフラグがセットされている場合に、そのキャッシュエントリのデータをメモリへセーブしてダーティフラグをリセットするライトバック操作、指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのデータをダーティフラグの状態に応じてメモリへセーブすることなくバリッドフラグをリセットする無効化操作、指定されるアドレスにヒットするキャッシュエントリがある場合に、ダーティフラグがセットされていればそのキャッシュエントリのデータをメモリへセーブしてダーティフラグ及びバリッドフラグをリセットし、ダーティフラグがリセットされていればそのキャッシュエントリのバリッドフラグのリセットのみを行うライトバック兼無効化操作、及び指定されるアドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのウィークフラグをセットする最古化操作の中の一つを実行してもよい。
【００１０】
この構成によれば、前記６種類の操作は、キャッシュのヒット率の向上、不必要なバストランザクションの削減、及びバストランザクションの平準化（時間的分散）に効果があるので、ソフトウェアからの制御を積極的に受け入れて処理を行うことによってキャッシュ効率の向上を図る上で好適である。
【００１１】
また、前記転送及び属性制御手段は、さらに、前記アドレス範囲の先頭及び末尾を、前記キャッシュメモリにおけるキャッシュデータの管理単位であるキャッシュエントリの先頭データを示すように調整するアドレス調整部を有し、前記操作要求部は、前記調整後のアドレス範囲に含まれる複数のアドレスに対する前記操作を、前記キャッシュメモリに逐次要求してもよい。
【００１２】
この構成によれば、前記アドレス調整部が、前記アドレス範囲の先頭及び末尾を、前記キャッシュエントリの先頭データを示すように調整するので、プログラマやコンパイラはキャッシュメモリのライン境界やラインサイズを管理する必要がなく、キャッシュ管理のための負担が軽減される。
【００１３】
また、前記転送及び属性制御手段は、さらに、複数のコマンドとそれぞれのコマンドに対応するアドレス範囲とを保持するコマンド保持部と、前記保持された複数のコマンドの中から一つを選択するコマンド選択部とを有し、前記操作要求部は、前記選択されたコマンドに関連するアドレス範囲に属する複数のアドレスに対する、そのコマンドによって示される操作を逐次要求してもよい。
【００１４】
また、好ましくは、前記コマンド選択部は、前記選択されたコマンドについて全ての要求がなされる前に、他のコマンドを選択し、前記操作要求部は、元のコマンドが再び選択された場合にそのコマンドについてまだ要求していないアドレスに対する操作を逐次要求してもよい。
【００１５】
この構成によれば、前記転送及び属性制御手段は複数のコマンドを保持して処理できるので、例えば前記複数のコマンドが、例えば前記プロセッサがマルチタスク処理を行う場合の各タスクから与えられる場合に好適である。
【００１６】
また、前記転送及び属性制御手段は、さらに、次に予定される要求に関して定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断する実行判断部と、肯定判断がなされると、前記予測アドレスに所定のオフセット値を加算又は減算することによって実効アドレスを生成する実効アドレス生成部とを有し、前記操作要求部は、前記生成された実効アドレスに対する前記操作を要求してもよい。
【００１７】
また、好ましくは、前記転送及び属性制御手段は、さらに、複数のコマンドとそれぞれのコマンドに関係するアドレス範囲とを保持するコマンド保持部を有し、前記実行判断部は、前記保持された各コマンドについて、そのコマンドに対応する予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断し、前記転送及び属性制御手段は、さらに、肯定判断がなされたコマンドの中から一つを選択するコマンド選択部を有し、前記実効アドレス生成部は、前記選択されたコマンドに対応する予測アドレスに所定値を加算又は減算することによって実効アドレスを生成し、前記操作要求部は、前記生成された実効アドレスに対する前記選択されたコマンドによって示される操作を要求してもよい。
【００１８】
この構成によれば、前記特定の命令がプリフェッチ付きの命令である場合に特に好適であり、その命令の操作対象に対してその命令の実行に同期して前記操作の要求がなされるので、キャッシュエントリを効率よく操作することができる。
【００１９】
また、前記転送及び属性制御手段は、さらに、前記キャッシュメモリにおけるキャッシュデータの管理単位である各キャッシュエントリを指定するアドレスを逐次出力するアドレス出力部を有し、前記操作要求部は、前記出力されたアドレスによって指定されるキャッシュエントリを含む一つ以上のキャッシュエントリに対する逐次操作を前記キャッシュメモリに要求し、前記キャッシュメモリは、前記要求に応じて逐次操作を実行してもよい。
【００２０】
ここで、前記逐次操作は、ライトバック操作であってもよい。
この構成によれば、バストランザクションの平準化（時間的分散）に効果があることは明らかである。
【００２１】
また、前記コマンドエントリ部は、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令と同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次ライトバックすることを示すオートクリーナコマンドとを、前記プロセッサから与えられ、前記操作要求部は、各コマンドに応じた操作要求を、予め設定された優先順位に基づいて、前記キャッシュメモリに要求してもよい。
【００２２】
ここで、前記予め設定された優先順位が、前記コマンドの順であってもよい。
この構成によれば、各操作の実行モードに応じた好適な順序で操作を要求することができる。
【００２３】
また、本発明は、このようなキャッシュメモリシステムとして実現することができるだけでなく、そのようなキャッシュメモリシステムが備える特徴的な手段によって実行される処理をステップとするキャッシュメモリシステムの制御方法として実現することもできる。
【発明の効果】
【００２４】
本発明のキャッシュメモリシステムによれば、前記予め定められた命令をプロセッサに実行させることによって、ソフトウェアから、キャッシュデータの転送及び属性操作を要求できるので、ソフトウェアからの制御を積極的に受け入れて処理を行うための好ましい構成を持ったキャッシュメモリシステムが得られる。
【００２５】
キャッシュ効率の向上を図るために前記操作としてキャッシュ効率の向上に効果がある操作を採用し、ソフトウェアからの積極的な制御下でこれらの操作を行えば、ハードウェアとソフトウェアとの良好な機能分担が可能となり、その結果、自律的な制御によるキャッシュ効率の向上を目指してハードウェアがいたずらに大規模化する事態を回避することもできる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２７】
＜全体構成＞
図１は、本発明の実施の形態におけるプロセッサ１、メモリ２、キャッシュメモリ３、及びＴＡＣ（Transfer and Attribute Controller）４を含むコンピュータシステムの全体構成を示すブロック図である。この実施の形態におけるキャッシュメモリ３及びＴＡＣ４が本発明のキャッシュメモリシステムに相当する。
【００２８】
ＴＡＣ４は、プロセッサ１が予め定められた命令を実行することによってキャッシュデータの転送及び属性操作とその操作の対象を指定するアドレスとを示すコマンドを与えられ、そのコマンドによって示される操作をキャッシュメモリ３に要求する。
【００２９】
キャッシュメモリ３は、プロセッサ１からのメモリアクセスに応じて、従来の一般的なキャッシュメモリが行うようにデータのキャッシングを行う。また、プロセッサ１からのメモリアクセスを処理していないときには、ＴＡＣ４からの要求に応じて、６種類のキャッシュデータの転送及び属性操作、並びにオートクリーナを実行する。この６種類の操作は動作プリミティブと呼ばれる。動作プリミティブ及びオートクリーナについて、後に詳しく説明する。
【００３０】
本発明のキャッシュメモリシステムのこのような構成は、ハードウェアによる自律的な制御によるキャッシュ効率の限界をソフトウェアの援用によって打開しようとしたときに、ソフトウェアからの制御を積極的に受け入れるために適している。
【００３１】
＜キャッシュメモリの構成＞
以下、キャッシュメモリ３の具体例として、４ウェイ・セット・アソシエイティブ方式のキャッシュメモリに本発明を適用した場合の構成について説明する。
【００３２】
図２は、キャッシュメモリ３の構成例を示すブロック図である。同図のように、キャッシュメモリ３は、アドレスレジスタ２０、メモリＩ／Ｆ２１、デマルチプレクサ２２、デコーダ３０、４つのウェイ３１ａ〜３１ｄ（以下ウェイ０〜３と略す）、４つの比較器３２ａ〜３２ｄ、４つのアンド回路３３ａ〜３３ｄ、オア回路３４、セレクタ３５、３６、デマルチプレクサ３７、制御部３８を備える。
【００３３】
デマルチプレクサ２２は、制御部３８からの制御に応じて、プロセッサ１から与えられるメモリ２へのアクセスアドレスを優先的に選択し、プロセッサ１からのメモリアクセスがないときにＴＡＣ４から与えられるアドレスを選択する。
【００３４】
アドレスレジスタ２０は、選択されたアクセスアドレスを保持するレジスタである。このアクセスアドレスは３２ビットであるものとする。同図に示すように、アクセスアドレスは、最上位ビットから順に、２１ビットのタグアドレス、４ビットのセットインデックス（図中のＳＩ）、５ビットのワードインデックス（図中のＷＩ）を含む。ここで、タグアドレスはウェイにマッピングされるメモリ中の領域（そのサイズはセット数×ブロックである）を指す。この領域のサイズは、タグアドレスよりも下位のアドレスビット（Ａ１０〜Ａ０）で定まるサイズつまり２ｋバイトであり、１つのウェイのサイズでもある。セットインデックス（ＳＩ）はウェイ０〜３に跨る複数セットの１つを指す。このセット数は、セットインデックスが４ビットなので１６セットある。タグアドレスおよびセットインデックスで特定されるキャッシュエントリは、リプレース単位であり、キャッシュメモリに格納されている場合はラインデータ又はラインと呼ばれる。ラインデータのサイズは、セットインデックスよりも下位のアドレスビットで定まるサイズつまり１２８バイトである。１ワードを４バイトとすると、１ラインデータは３２ワードである。ワードインデックス（ＷＩ）は、ラインデータを構成する複数ワード中の１ワードを指す。アドレスレジスタ２０中の最下位２ビット（Ａ１、Ａ０）は、ワードアクセス時には無視される。
【００３５】
メモリＩ／Ｆ２１は、キャッシュメモリ３からメモリ２へのデータのライトバックや、メモリ２からキャッシュメモリ３へのデータのロード等、キャッシュメモリ３からメモリ２をアクセスするためのＩ／Ｆである。
【００３６】
デコーダ３０は、セットインデックスの４ビットをデコードし、４つのウェイ０〜３に跨る１６セット中の１つを選択する。
【００３７】
４つのウェイ０〜３は、同じ構成を有数する４つのウェイであり、４×２ｋバイトの容量を有する。各ウェイは、１６個のキャッシュエントリを有する。１つのキャッシュエントリは、バリッドフラグＶ、２１ビットのタグ、１２８バイトのラインデータ、ウィークフラグＷ、使用フラグＵ、及びダーティフラグＤを有する。
【００３８】
タグは２１ビットのタグアドレスのコピーである。ラインデータは、タグアドレスおよびセットインデックスにより特定されるブロック中の１２８バイトデータのコピーである。
【００３９】
バリッドフラグＶは、当該キャッシュエントリのデータが有効か否かを示す。
【００４０】
ウィークフラグＷは、プロセッサからのアクセスに関しては、アクセス頻度の低いアクセスか否かを示し、キャッシュメモリにおけるリプレース制御に関しては、そのキャッシュエントリのアクセス順序を強制的に最古とする、つまりそのキャッシュエントリがアクセスされた時期が他のどのキャッシュエントリがアクセスされた時期よりも古いとみなすことを示す。ウィークフラグＷによって、他のキャッシュエントリよりも先に追い出してもよい最強のリプレース対象が示される。
【００４１】
使用フラグＵは、そのキャッシュエントリにアクセスがあったか否かを示し、ＬＲＵ方式におけるキャッシュエントリ間のアクセス順序データの代わりに用いられる。より正確には、使用フラグＵの１は、アクセスがあったことを、０はないことを意味する。ただし、１つのセット内の４つのウェイの使用フラグが全て１になる場合には、セットするウェイ以外は０にリセットされる。別言すれば、使用フラグＵは、アクセスされた時期が古いか新しいか２つの相対的な状態を示す。つまり、使用フラグＵが１のキャッシュエントリは、使用フラグが０のキャッシュエントリよりも新しくアクセスされたことを意味する。
【００４２】
ダーティフラグＤは、当該キャッシュエントリにプロセッサから書き込みがあったか否か、つまりライン中にキャッシュされたデータが存在するが書き込みによりメモリ中のデータと異なる可能性があるためメモリに書き戻すことが必要か否かを示す。
【００４３】
比較器３２ａは、アドレスレジスタ２０中のタグアドレスと、セットインデックスにより選択されたセットに含まれる４つのタグ中のウェイ０のタグとが一致するか否かを比較する。比較器３２ｂ〜３２ｃについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。
【００４４】
アンド回路３３ａは、バリッドフラグと比較器３２ａの比較結果とが一致するか否かをアンドする。この比較結果をｈ０とする。比較結果ｈ０が１である場合は、アドレスレジスタ２０中のタグアドレスおよびセットインデックスに対応するラインデータが一致すること、つまりウェイ０においてヒットしたことを意味する。比較結果ｈ０が０である場合は、ミスヒットしたことを意味する。アンド回路３３ｂ〜３３ｄについても、ウェイ３１ｂ〜３１ｄに対応すること以外は同様である。その比較結果ｈ１〜ｈ３は、ウェイ１〜３でヒットしたかミスしたかを意味する。
【００４５】
オア回路３４は、比較結果ｈ０〜ｈ３のオアをとる。このオアの結果をｈｉｔとする。ｈｉｔは、キャッシュメモリにヒットしたか否かを示す。
【００４６】
セレクタ３５は、選択されたセットにおけるウェイ０〜３のラインデータのうち、ヒットしたウェイのラインデータを選択する。
【００４７】
セレクタ３６は、セレクタ３５により選択された３２ワードのラインデータにうち、ワードインデックスに示される１ワードを選択する。
【００４８】
デマルチプレクサ３７は、キャッシュエントリにデータを書き込む際に、ウェイ０〜３の１つに書き込みデータを出力する。この書き込みデータはワード単位でよい。
【００４９】
制御部３８は、キャッシュメモリ３の全体の制御を行う。
【００５０】
＜使用フラグＵの説明＞
図３は、制御部３８による使用フラグの更新例を示す。同図の上段、中断、下段は、ウェイ０〜３に跨るセットＮを構成する４つのキャッシュエントリを示している。４つのキャッシュエントリ右端の１又は０は、それぞれ使用フラグの値である。この４つの使用フラグＵをＵ０〜Ｕ３と記す。
【００５１】
同図上段では（Ｕ０〜Ｕ３）＝（１、０、１、０）であるので、ウェイ０、２のキャッシュエントリはアクセスがあったことを、ウェイ１、３のキャッシュエントリはアクセスがないことを意味する。
【００５２】
この状態で、メモリアクセスがセットＮ内のウェイ１のキャッシュエントリにヒットした場合、同図中段に示すように、（Ｕ０〜Ｕ３）＝（１、１、１、０）に更新される。つまり、実線に示すようにウェイ１の使用フラグＵ１が０から１に更新される。
【００５３】
さらに、同図中段の状態で、メモリアクセスがセットＮ内のウェイ３のキャッシュエントリにヒットした場合、同図下断に示すように、（Ｕ０〜Ｕ３）＝（０、０、０、１）に更新される。つまり、実線に示すようにウェイ３の使用フラグＵ１が０から１に更新される。加えて、破線に示すようにウェイ３以外の使用フラグＵ０〜Ｕ２が１から０に更新される。これにより、ウェイ３のキャシュエントリが、ウェイ０〜２の各キャッシュエントリよりも新しくアクセスされたことを意味することになる。
【００５４】
制御部３８は、キャッシュミス時にＷ＝１のキャッシュエントリが存在しなければ、使用フラグに基づいてリプレース対象のキャッシュエントリを決定してリプレースを行う。例えば、制御部３８は、図３上段では、ウェイ１とウェイ３の何れかをリプレース対象と決定し、図３中段ではウェイ３をリプレース対象と決定し、図３下段ではウェイ０〜２の何れかをリプレース対象と決定する。
【００５５】
＜ウィークフラグＷの説明＞
図４（ａ）ウィークフラグが存在しないと仮定した場合の比較例であり、キャッシュエントリがリプレースされる様子を示す図である。同図においても、図３と同様にウェイ０〜３に跨るセットＮを構成する４つのキャッシュエントリを示している。４つのキャッシュエントリ右端の１又は０は、それぞれ使用フラグの値である。また、データＥのみアクセス頻度の低いデータを、データＡ、Ｂ、Ｃ、Ｄはアクセス頻度の高いデータとする。
【００５６】
図４（ａ）の第１段目の状態で、プロセッサ１がデータＥにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、Ｕ＝０のキャッシュエントリの中からアクセス頻度の高いデータＣのキャッシュエントリがアクセス頻度の低いデータＥにリプレースされ、第２段目の状態となる。
【００５７】
第２段目の状態で、プロセッサ１がデータＣにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、Ｕ＝０のキャッシュエントリであるアクセス頻度の高いデータＤのキャッシュエントリがアクセス頻度の高いデータＣにリプレースされ、第３段目の状態となる。
【００５８】
第３段目の状態で、プロセッサ１がデータＤにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、アクセス頻度の高いデータＡのキャッシュエントリがアクセス頻度の高いデータＤにリプレースされ、第４段目の状態となる。
【００５９】
同様に、第４段目でも、使用頻度の低いデータＥはリプレース対象として選択されないで、キャッシュメモリに残っている。
【００６０】
第５段目の状態で、使用頻度の低いデータＥは最も古い（Ｕ＝０）であることから、リプレース対象として選択されて、追い出される。
【００６１】
このように、擬似ＬＲＵ方式において（通常のＬＲＵ方式においても）、アクセス頻度の低いデータＥによって、４ウェイの場合は最悪４回のキャッシュミスを誘発する場合がある。
【００６２】
図４（ｂ）は、リプレース処理におけるウィークフラグＷの役割を示す説明図である。
【００６３】
図４（ｂ）の第１段目の状態（図４（ａ）の第１段目と同じ）で、プロセッサ１がデータＥにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、例えば、Ｕ＝０のキャッシュエントリの中からアクセス頻度の高いデータＣのキャッシュエントリがアクセス頻度の低いデータＥにリプレースされる。このとき、プロセッサ１は、データＥのキャッシュエントリにウィークフラグＷを１に設定するものとする。これにより、次のキャッシュミス時にデータＥのキャッシュエントリが真っ先に追い出され、第２段目の状態となる。
【００６４】
第２段目の状態で、プロセッサ１がデータＣにアクセスすると、キャッシュミスが発生する。このキャッシュミスにより、Ｗ＝１のキャッシュエントリであるアクセス頻度の低いデータＥのキャッシュエントリがリプレース対象として選択され、アクセス頻度の高いデータＣにリプレースされ、第３段目の状態となる。
【００６５】
このように、ウィークフラグＷを設けることにより、アクセス頻度の低いデータによるキャッシュミスの誘発を低減することができる。
【００６６】
＜動作プリミティブ＞
次に、キャッシュメモリ３が実行する６種類の動作プリミティブについて説明する。動作プリミティブは、ＴＡＣ４から指定される単一のアドレスに対する次のような操作である。
（１）フィル操作：前記アドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへ前記指定されたアドレスに対応するデータをロードし、タグを設定してバリッドフラグＶをセットする。この操作は、キャッシュのヒット率の向上に役立つ。
（２）タッチ操作：前記アドレスにヒットするキャッシュエントリがない場合に、リプレース対象となるキャッシュエントリを選択し、メモリから前記選択されたキャッシュエントリへデータをロードすることなくタグを設定してバリッドフラグＶをセットする。この操作は、キャッシュのヒット率の向上と、不必要なバストランザクションの削減に役立つ。
（３）ライトバック操作：前記アドレスにヒットするキャッシュエントリがありかつダーティフラグＤがセットされている場合に、そのキャッシュエントリのデータをメモリへセーブしてダーティフラグＤをリセットする。この操作は、バストランザクションの平準化（時間的分散）に役立つ。
（４）無効化操作：前記アドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのデータをダーティフラグに応じてメモリへセーブすることなくバリッドフラグＶをリセットする。この操作は、不必要なバストランザクションの削減に役立つ。
（５）ライトバック兼無効化操作：前記アドレスにヒットするキャッシュエントリがある場合に、ダーティフラグＤがセットされていればそのキャッシュエントリのデータをメモリへセーブしてダーティフラグＤ及びバリッドフラグＶをリセットし、ダーティフラグＤがリセットされていればそのキャッシュエントリのバリッドフラグＶのリセットのみを行う。この操作は、バストランザクションの平準化（時間的分散）に役立つ。
（６）最古化操作：前記アドレスにヒットするキャッシュエントリがある場合に、そのキャッシュエントリのウィークフラグＷをセットする。この操作は、キャッシュのヒット率の向上に役立つ。
【００６７】
＜動作プリミティブ処理＞
図５は、キャッシュメモリ３における動作プリミティブ処理の一例を示すフローチャートである。この動作プリミティブ処理は、ＴＡＣ４から動作プリミティブの指定Ｉと、操作対象を指定するアドレスＡとを与えられると起動され、指定された動作プリミティブを実行する。
【００６８】
制御部３８がプロセッサ１からのメモリアクセスを処理中なら、その処理が終了するまで待ち（Ｓ１０１：ＹＥＳ）、そして、プロセッサ１からのメモリアクセスが行われていない期間に、デマルチプレクサ２２はＴＡＣ４から与えられたアドレスを選択する（Ｓ１０２）。
【００６９】
そのアドレスにヒットするキャッシュエントリがある場合には（Ｓ１０３：ＹＥＳ）、無効化、最古化、ライトバック、及びライトバック兼無効化のみが、そのヒットしたキャッシュエントリを操作対象として実行される（Ｓ１０４）。指定された動作プリミティブがライトバック又はライトバック兼無効化であれば、ダーティフラグＤが１ならライトバックし（Ｓ１０５〜Ｓ１０６）、さらに指定された動作プリミティブがライトバック兼無効化であればバリッドフラグＶをリセットする（Ｓ１０７〜Ｓ１０８）。また、指定された動作プリミティブが無効化であればバリッドフラグＶをリセットし（Ｓ１１０）、最古化であればウィークフラグＷをセットする（Ｓ１０９）。
【００７０】
そのアドレスにヒットするキャッシュエントリがない場合には（Ｓ１０３：ＮＯ）、フィル及びタッチのみが実行される（Ｓ１１１）。その場合にはまず、リプレース対象となるキャッシュエントリを選択し（Ｓ１１２）、そのキャッシュエントリのダーティフラグＤが１ならライトバックし（Ｓ１１３〜Ｓ１１４）、タグアドレスを設定して（Ｓ１１５）、さらに指定された動作プリミティブがフィルであればそのキャッシュエントリへメモリからデータをロードし（Ｓ１１７）、その後、Ｖフラグをセットする（Ｓ１１８）。
【００７１】
＜オートクリーナ＞
次に、キャッシュメモリ３が実行するオートクリーナについて説明する。オートクリーナは、ＴＡＣ４から指定される単一のアドレスに対する次のような操作である。
【００７２】
前記アドレスで示されるセットの各キャッシュエントリ（図２を参照して具体的に言えば、前記アドレスに含まれるセットインデックスＳＩで指し示されるセットに属する４つのキャッシュエントリ）について、ダーティフラグＤ及びウィークフラグＷが共にセットされていればライトバックする。
【００７３】
この操作は、バストランザクションの平準化（時間的分散）に役立つ。
【００７４】
＜オートクリーナ処理＞
図６は、キャッシュメモリ３におけるオートクリーナ処理の一例を示すフローチャートである。このオートクリーナ処理は、ＴＡＣ４からオートクリーナの指定Ｉと、操作対象を指定するアドレスＡとを与えられると起動される。
【００７５】
制御部３８がプロセッサ１からのメモリアクセスを処理中なら、その処理が終了するまで待ち（Ｓ２０１：ＹＥＳ）、そして、プロセッサ１からのメモリアクセスが行われていない期間に、デマルチプレクサ２２はＴＡＣ４から与えられたアドレスを選択する（Ｓ２０２）。
【００７６】
そのアドレスに含まれるセットインデックスで指定されるセットに属する各キャッシュエントリについて、以下を繰り返す（Ｓ２０３〜Ｓ２０７）。
【００７７】
ダーティフラグＤが１で、かつウィークフラグＷが１なら（Ｓ２０４：ＹＥＳ）、ライトバックしてダーティフラグＤをリセットする（Ｓ２０５〜Ｓ２０６）。
【００７８】
＜変形例＞
なお、本発明のキャッシュメモリは、上記の実施の形態の構成に限るものではなく、種々の変形が可能である。以下、変形例のいくつかについて説明する。
（１）上記実施の形態では、４ウェイ・セット・アソシエイティブのキャッシュメモリを例に説明したが、ウェイ数は、いくつでもよい。また、上記実施の形態では、セット数が１６である例を説明したが、セット数はいくつでもよい。
（２）上記実施の形態では、セット・アソシエイティブのキャッシュメモリを例に説明したが、フル・アソシエイティブ方式やダイレクトマップ方式のキャッシュメモリであってもよい。
（３）上記実施の形態では、ラインをキャッシュデータのリプレース単位であるとして説明したが、ラインを４つに分割した各部分であるサブラインをリプレース単位としてもよい。その場合、各キャッシュエントリは、４つのバリッドフラグおよび４つのダーティフラグをそれぞれ保持する。
【００７９】
図７は、その場合のキャッシュエントリの構成例を示す図である。ラインの１／４をサブラインとする他に、ラインの１／２、１／８、１／１６をサブラインとしてもよい。その場合、各キャッシュエントリは、サブラインと同数のバリッドフラグおよびダーティフラグをそれぞれ保持する。リプレース単位をラインとするかサブラインとするかを、ＴＡＣ４からの指示に応じて切り替えてもよい。
（４）キャッシュメモリとしてのいくつかの機能（例えばリプレース機能）が制限されるウェイ（インアクティブウェイ）を設けてもよい。各ウェイをそのようなインアクティブウェイとするか、全ての機能が利用可能なアクティブウェイとするかを、ＴＡＣ４からの指示に応じて切り替えてもよい。
【００８０】
＜キャッシュメモリ及びＴＡＣ間のインタフェースの一例＞
図８は、キャッシュメモリ３とＴＡＣ４との間のインタフェース（送受信される信号）の一例を示す図である。この例には、上記の変形例が考慮されている。
【００８１】
３２ビットのアドレスは、操作の対象を指定する。要求、要求受理、及び実行完了は、要求の発行に関するハンドシェイクに用いられる。フィル、タッチ、ライトバック、無効化、ライトバック兼無効化、最古化、及びオートクリーナは、要求する操作を指定する。３ビットのアクティブウェイは、ウェイごとにアクティブウェイとするかインアクティブウェイとするかを指定する。リフィル単位は、リプレース単位をラインとするかサブラインとするかを指定する。
【００８２】
＜ＴＡＣの構成＞
次に、ＴＡＣの構成について説明する。
【００８３】
図９は、ＴＡＣ４の構成例を示すブロック図である。ＴＡＣ４は、プロセッサ１から与えられるコマンドに応じた操作をキャッシュメモリ３へ要求するために、コマンドエントリ部４０、領域コマンド制御部４１、命令連動コマンド制御部４２、オートクリーナ制御部４３、及び操作要求部４４を備える。
【００８４】
ＴＡＣ４がプロセッサ１から与えられるコマンドには、単一のアドレスに対する操作を示す単独コマンドと、アドレス範囲に含まれる複数のアドレスに対する操作を前記プロセッサが実行する特定の命令に同期して行うことを示す命令連動コマンドと、アドレス範囲に含まれる複数のアドレスに操作を前記プロセッサが実行する特定の命令とは非同期に行うことを示す領域コマンドと、キャッシュデータを逐次ライトバックすることを示すオートクリーナコマンドとがある。
【００８５】
コマンドエントリ部４０は、プロセッサ１が予め定められた命令を実行することによって、コマンドとアドレスとを書き込まれるレジスタ群であり、動作プリミティブレジスタ４０１、スタートアドレスレジスタ４０２、サイズレジスタ４０３、コマンドレジスタ４０４、及びＴＡＣコントロールレジスタ４０５を備える。これらのレジスタは、例えば予め定められたメモリアドレスに割り当てられるなどして、プロセッサ１から直接アクセスが可能であり、プロセッサ１により書き込まれた内容を保持する。
【００８６】
領域コマンド制御部４１は、領域コマンドを最大４つまで保持し、保持されているコマンドに応じた要求を生成する機能ブロックであり、アドレス調整部４１１、コマンド保持部４１２、及びコマンド選択部４１３を備える。
【００８７】
命令連動コマンド制御部４２は、命令連動コマンドを最大４つまで保持し、保持されているコマンドに応じた要求を、プロセッサ１が実行する特定の命令と同期して生成する機能ブロックであり、アドレス調整部４２１、コマンド保持部４２２、実行判断部４２３、コマンド選択部４２４、実効アドレス生成部４２５を備える。
【００８８】
オートクリーナ制御部４３は、オートクリーナ要求を生成する機能ブロックであり、クリーニングアドレス出力部４３１を備える。
【００８９】
＜コマンドエントリ部＞
単独コマンドは、動作プリミティブレジスタ４０１に書き込まれ、保持される。
【００９０】
図１０（ａ）に、動作プリミティブレジスタ４０１に単独コマンドを書き込む命令の一例を示す。この命令は、通常の転送命令（ｍｏｖ命令）であり、ソースオペランドとしてコマンドを、デスティネーションオペランドとして動作プリミティブレジスタ（ＰＲ）４０１を指定している。
【００９１】
図１０（ｂ）に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、操作対象アドレスと動作プリミティブの指定とからなる。
【００９２】
コマンドエントリ部４０は、動作プリミティブレジスタ４０１に保持された単独コマンドに応じた要求を操作要求部４４へ出力する。
【００９３】
領域コマンド及び命令連動コマンドは、スタートアドレスレジスタ４０２、サイズレジスタ４０３、及びコマンドレジスタ４０４に書き込まれる。
【００９４】
図１１（ａ）に、スタートアドレスレジスタ（ＳＡＲ）４０２にスタートアドレスを書き込む命令の一例を示す。この命令も、図１０（ａ）と同様に通常の転送命令である。スタートアドレスは、コマンドの操作対象の先頭アドレスを示す。
【００９５】
図１１（ｂ）に、サイズレジスタ（ＳＲ）４０３にサイズを書き込む命令の一例を示す。この命令も、通常の転送命令である。サイズは、前記操作対象の大きさを示す。サイズの単位は、バイト数であっても、ライン数（キャッシュエントリ数）であってもよく、予め定められた単位であればよい。
【００９６】
図１１（ｃ）に、コマンドレジスタ（ＣＲ）４０４にコマンドを書き込む命令の一例を示す。この命令も、通常の転送命令である。
【００９７】
図１１（ｄ）に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、操作の要求を特定の命令の実行に連動させるか否か（つまり、コマンドが命令連動コマンドか領域コマンドか）を指定する命令連動フラグと、動作プリミティブの指定と、指定されたアドレス範囲内で操作対象とする複数のアドレスの間隔を示すインクリメント値とからなる。
【００９８】
このインクリメント値を、例えばラインのサイズとすれば、アドレス範囲内の全てのキャッシュデータに順次所望の操作を行うことができる。また、前記特定の命令がポストインクリメント付きのロード・ストア命令である場合に、このインクリメント値をその命令のポストインクリメント値とすれば、その命令の操作対象に順次所望の操作を行うことができる。
【００９９】
コマンドエントリ部４０は、スタートアドレスレジスタ４０２、サイズレジスタ４０３、及びコマンドレジスタ４０４に前述した内容が書き込まれると、そのコマンドが領域コマンドなら領域コマンド制御部４１へ出力し、命令連動コマンドなら命令連動コマンド制御部４２へ出力する。
【０１００】
オートクリーナコマンドは、ＴＡＣコントロールレジスタ４０５内の予め定められたビット位置にあってオートクリーナを有効とするか無効とするかを示すオートクリーナフラグの値を更新する。
【０１０１】
図１２（ａ）に、オートクリーナフラグを（ＴＡＣコントロールレジスタ４０５全体の内容と共に）更新する命令の一例を示す。この命令も、通常の転送命令である。
【０１０２】
図１２（ｂ）に、コマンドフォーマットの一例を示す。このコマンドフォーマットは、ＴＡＣコントロールレジスタのフォーマットに対応し、前記ビット位置にオートクリーナフラグの新しい値を含む。
【０１０３】
コマンドエントリ部４０は、ＴＡＣコントロールレジスタ４０５に保持されたオートクリーナフラグの値をオートクリーナ制御部４３へ出力する。
【０１０４】
＜領域コマンド制御部＞
領域コマンド制御部４１において、アドレス調整部４１１は、コマンドエントリ部４０から領域コマンドに関するアドレス範囲を取得し、その両端をそれぞれキャッシュエントリの先頭データを指すように調整し、コマンド保持部４１２は、アドレス範囲を調整された後の領域コマンドを最大４つまで保持し、コマンド選択部４１３は、保持されている領域コマンドの一つ（例えば、最も古くから保持されている一つ）を選択して、選択された領域コマンドに応じた要求を生成し、操作要求部４４へ出力する。
【０１０５】
＜アドレス調整部＞
ここで、アドレス調整部４１１のアドレス調整機能の内容を詳しく説明する。
【０１０６】
アドレス調整部４１１は、まずスタートアドレスレジスタ４０２に保持されたスタートアドレスとサイズレジスタ４０３に保持されたサイズとを加算する。加算結果は、アドレス範囲の終了位置を指すエンドアドレスである。サイズは、前述したように、予め定められた単位で表されていればよく、その単位が例えばバイトであればバイトアドレスとして加算し、ラインであればラインアドレスとして加算すればよい。
【０１０７】
次に、アドレス調整部４１１は、スタートアドレス及びエンドアドレスを調整する。
【０１０８】
図１３は、その調整の内容を説明する概念図である。同図において、スタートアドレスはラインＮの先頭以外の任意の位置を指す。スタートアドレスは、次のライン（Ｎ＋１）の先頭を指すようアラインスタートアドレスａに調整されるか、又はスタートアドレスのデータを含むラインＮの先頭を指すようアラインスタートアドレスｂに調整される。アラインスタートアドレスが指すラインをスタートラインと呼ぶ。
【０１０９】
また、エンドアドレスはラインＭの先頭以外の任意の位置を指す。エンドアドレスは、直前のライン（Ｍ−１）の先頭を指すようアラインエンドアドレスａに調整されるか、又はエンドアドレスのデータを含むラインＭの先頭を指すようアラインエンドアドレスｂに調整される。アラインエンドアドレスが指すラインをエンドラインと呼ぶ。
【０１１０】
このように、スタートアドレス及びエンドアドレスは、ライン単位で内側アラインされるか又は外側アラインされる。ライン単位の外側アラインの後、さらに、サブライン単位の外側アラインと内側アラインが可能である。
【０１１１】
この調整によりプロセッサ１はラインサイズ及びライン境界とは無関係に、任意のスタートアドレスと任意の大きさとを指定することができる。
【０１１２】
＜コマンド保持部＞
コマンド保持部４１２は、アドレス調整部４１１からアラインスタートアドレスとアラインエンドアドレスとを取得するとともに、コマンドレジスタ４０４から動作プリミティブとインクリメント値とを取得して保持する。
【０１１３】
図１４は、コマンド保持部４１２の構成を示すブロック図である。コマンド保持部４１２は、４つのレジスタ４１２１〜４１２４から構成され、好ましくは各レジスタの内容を読み出し可能なＦＩＦＯ（First In First Out）方式のキューであるとしてもよい。各レジスタは、アドレス調整部４１１から取得されたアラインスタートアドレス及びアラインエンドアドレス、及びコマンドレジスタ４０４から取得されたインクリメント値及び動作プリミティブを保持する。アラインスタートアドレスは、操作要求部４４からの制御に応じて、要求ごとにインクリメント値を加算することによって次々に更新され、カレントアドレスとして用いられる。
【０１１４】
＜コマンド選択部＞
コマンド選択部４１３は、コマンド保持部４１２に保持されているコマンドの一つ（例えば最も古い一つ、つまりＦＩＦＯキューの先頭）を選択し、そのカレントアドレスと動作プリミティブとを示す一つの要求を生成し、操作要求部４４へ出力する。
【０１１５】
＜領域コマンド制御処理＞
図１５は、領域コマンド制御部４１における領域コマンド制御処理の一例を示すフローチャートである。
【０１１６】
コマンドエントリ部４０に領域コマンドがエントリされると（Ｓ３０１：ＹＥＳ）、アドレス調整部４１１はそのコマンドのアドレスを調整して（Ｓ３０２）、コマンド保持部４１２へアドレス調整後のコマンドを登録する（Ｓ３０３）。このコマンドは、まだコマンドを保持していないレジスタに登録されるか、全てのレジスタがコマンドを保持している場合には、最も古いコマンドを上書きすることによって登録される。なお、カレントアドレスがアラインエンドアドレスを上回った（これは、全ての対象アドレスに対する操作を要求し終えたことを意味する）コマンドに上書きするか、又はそのようなコマンドを予め消去しておいてもよく、また、全てのレジスタがコマンドを保持している場合には、新たなコマンドを登録せずにプロセッサ１に例外を発生させることも考えられる。
【０１１７】
コマンドが登録されていれば（Ｓ３０４：ＹＥＳ）、コマンド選択部４１３は、最も古いコマンドを選択して、そのカレントアドレスと動作プリミティブとを示す要求を操作要求部４４へ出力する（Ｓ３０５）。
【０１１８】
なお、コマンド選択部４１３は、最も古いコマンド以外のコマンドを選択してもよい。具体的には、例えば、各コマンドを発行したタスクと、現在プロセッサ１で実行されているカレントタスクとが知られる構成を設けた上で、カレントタスクから与えられたコマンドを、最も古いコマンドよりも優先して選択することが考えられる。
【０１１９】
この構成は、例えばプロセッサ１がマルチタスク処理を行う場合に適しており、タスクの切り替えに追従してカレントタスクから与えられたコマンドを優先的に処理できる。しかも、コマンド保持部４１２は、コマンドごとにカレントアドレスを保持しているから、ひとたび他のコマンドが選択された後で、元のコマンドが選択された場合でも、元のコマンドについてまだ要求していないアドレスに対する操作を要求することができる。
【０１２０】
＜命令連動コマンド制御部＞
命令連動コマンド制御部４２において、アドレス調整部４２１は、コマンドエントリ部４０から命令連動コマンドに関するアドレス範囲を取得し、その両端をそれぞれキャッシュエントリの先頭データを指すように調整し、コマンド保持部４２２は、アドレス範囲を調整された後の命令連動コマンドを最大４つまで保持する。実行判断部４２３は、保持されている各コマンドについて定められる予測アドレスに対して、前記プロセッサによって特定の命令が実行されたか否かを判断し、コマンド選択部４２４は、肯定判断されたコマンドの一つ（例えば、最も古くから保持されている一つ）を選択し、実効アドレス生成部４２５によって生成される実効アドレスに対する要求を操作要求部４４へ出力する。
【０１２１】
ここで、アドレス調整部４２１及びコマンド保持部４２２は、それぞれアドレス調整部４１１及びコマンド保持部４１２と同一であるので、説明を省略する。
【０１２２】
＜実行判断部＞
実行判断部４２３は、コマンド保持部４２２に保持されている各コマンドのカレントアドレスを予測アドレスとして用いて、プロセッサ１によってその予測アドレスをオペランドとする特定命令（具体的には、ポストインクリメント付きロード命令、及びポストインクリメント付きストア命令）が実行されたか否かを判断する。このような判断を行うために、例えば、プロセッサ１は、ポストインクリメント付きロード命令、及びポストインクリメント付きストア命令を実行中であることを示す信号Ｃを実行判断部４２３に供給し、実行判断部４２３は、信号Ｃが供給されている期間に、アドレスバスに現れるアドレスをコマンド保持部４２２に保持されている各カレントアドレスと比較してもよい。
【０１２３】
＜コマンド選択部、及び実効アドレス生成部＞
コマンド選択部４２４は、実行判断部４２３によって肯定判断されたコマンドの一つ（例えば最も古い一つ）を選択する。実効アドレス生成部４２５は、選択されたコマンドがフィル又はタッチを示す場合、そのコマンドのカレントアドレス（前述した予測アドレス）に、１ライン分のオフセット値を加算することによって、コマンドの操作対象となる実効アドレスを生成する。また、選択されたコマンドがライトバック、無効化、ライトバック兼無効化、又は最古化を示す場合、そのコマンドのカレントアドレスから、１ライン分のオフセット値を減算することによって、コマンドの操作対象となる実効アドレスを生成する。そして、コマンド選択部４２４は、その実効アドレスと動作プリミティブの指定とを示す一つの要求を生成し、操作要求部４４へ出力すると共に、選択されたコマンドに対応するカレントアドレスを、インクリメント値分増加させることによって更新する。
【０１２４】
なお、ここではリプレース単位がラインであるとして１ライン分のオフセット値を用いることとしたが、リプレース単位がサブラインである場合には、より小さな（例えば２サブライン分の）オフセット値を用いてもよい。
【０１２５】
＜命令連動コマンド制御処理＞
図１６は、命令連動コマンド制御部４２における命令連動コマンド制御処理の一例を示すフローチャートである。
【０１２６】
コマンドエントリ部４０に命令連動コマンドがエントリされると（Ｓ４０１：ＹＥＳ）、アドレス調整部４２１はそのコマンドのアドレスを調整して（Ｓ４０２）、コマンド保持部４２２へアドレス調整後のコマンドを登録する（Ｓ３０３）。このコマンドは、領域コマンドの場合と同様、まだコマンドを保持していないレジスタに登録されるか、全てのレジスタがコマンドを保持している場合には、最も古いコマンドを上書きすることによって登録される。なお、カレントアドレスがアラインエンドアドレスを上回った（つまり、アドレス範囲内の全ての対象アドレスに対する要求を発行し終えた）コマンドに上書きするか、又はそのようなコマンドを予め消去しておいてもよく、また、全てのレジスタがコマンドを保持している場合には、新たなコマンドを登録せずにプロセッサ１に例外を発生させることも考えられる。
【０１２７】
コマンドが登録されていれば（Ｓ４０４：ＹＥＳ）、実行判断部４２３は、前記特定命令のオペランドアドレスを各コマンドのカレントアドレスと比較する（Ｓ４０５）。アドレスが一致したコマンドがあれば（Ｓ４０６：ＹＥＳ）、コマンド選択部４２４は、その中で最も古い一つを選択し（Ｓ４０７）、実効アドレス生成部４２５は、選択されたコマンドについて実効アドレスを生成して、コマンド選択部４２４は、その実効アドレスと動作プリミティブとを示す要求を操作要求部４４へ出力し、選択されたコマンドに対応するカレントアドレスを、インクリメント値分増加させることによって更新する（Ｓ４０８）。
【０１２８】
＜オートクリーナ制御部＞
オートクリーナ制御部４３において、クリーニングアドレス出力部４３１は、キャッシュメモリ３における各キャッシュエントリを指定するアドレスを逐次出力する。クリーニングアドレス出力部４３１は、アドレスを保持して出力する単なるレジスタであってもよい。
【０１２９】
このクリーニングアドレスには、例えば４ウェイ・セット・アソシエイティブ方式のキャッシュメモリ（図２を参照）においては、各セットを指定するアドレスを用いればよい。そのようなアドレスは、図２の例について具体的に言えば、０ｘ００００００００から０ｘ０００００７８０までの０ｘ００８０（セットの単位アドレス）おきの１６個のアドレスによって代表される。これらのアドレスにはセットインデックスＳＩの全ての値が含まれるので、全てのセットの指定が可能である。
【０１３０】
オートクリーナ制御部４３は、ＴＡＣコントロールレジスタ４０５からオートクリーナが有効であることを示すフラグ値が取得される間、クリーニングアドレス出力部４３１から出力されるアドレスに対するオートクリーナ操作の要求を操作要求部４４へ出力する。
【０１３１】
＜オートクリーナ制御処理＞
図１７は、オートクリーナ制御部４３におけるオートクリーナ制御処理の一例を示すフローチャートである。
【０１３２】
ＴＡＣコントロールレジスタ４０５からオートクリーナが有効であることを示すフラグ値が得られる場合（Ｓ５０１：ＹＥＳ）、オートクリーナ制御部４３は、クリーニングアドレス出力部４３１から出力されるアドレスに対するオートクリーナ操作を操作要求部４４へ出力する（Ｓ５０２）。
【０１３３】
＜操作要求処理＞
ここまでの説明から、操作要求部４４には、単独コマンドに応じた要求、命令連動コマンドに応じた要求、領域コマンドに応じた要求、及びオートクリーナ操作の要求の最大４つの要求が与えられる可能性がある。操作要求部４４は、これらの要求が同時に与えられた場合、予め設定された優先順位に基づいて一つの要求を選択し、選択した要求をキャッシュメモリ３へ転送する。この予め設定された優先順位は、前述したコマンドの順序としてもよい。
【０１３４】
また、操作要求部４４は、命令連動コマンドに応じた要求、領域コマンドに応じた要求、及びオートクリーナ操作の要求を転送した場合には、その要求の次の操作対象が示されるように、コマンドのカレントアドレス、及びクリーニングアドレスを制御する。
【０１３５】
図１８は、操作要求部４４における操作要求処理の一例を示すフローチャートである。
【０１３６】
単独コマンドに応じた要求があれば（Ｓ６０１：ＹＥＳ）、その要求をキャッシュメモリ３に転送する（Ｓ６０２）。単独コマンドに応じた要求を転送した後、操作要求部４４は、動作プリミティブレジスタの内容を消去してもよい。
【０１３７】
命令連動コマンドに応じた要求があれば（Ｓ６０３：ＹＥＳ）、その要求をキャッシュメモリ３へ転送する（Ｓ６０４）。転送した要求に対応するコマンドのカレントアドレス（コマンド選択部４２４においてそのコマンドが選択された際にインクリメントされる）がアラインエンドアドレスを上回っている場合には、そのコマンドを消去してもよい。
【０１３８】
領域コマンドに応じた要求があれば（Ｓ６０６：ＹＥＳ）、その要求をキャッシュメモリ３へ転送し（Ｓ６０７）、その後、領域コマンド制御部４１を介して、その領域コマンドのカレントアドレスを、インクリメント値分増加させることによって更新する（Ｓ６０８）。この更新によって、カレントアドレスがアラインエンドアドレスを上回った場合には、そのコマンドを消去してもよい。
【０１３９】
オートクリーナコマンドに応じた要求があれば（Ｓ６０９：ＹＥＳ）、その要求をキャッシュメモリ３へ転送し（Ｓ６１０）、その後、オートクリーナ制御部４３を制御して、クリーニングアドレス出力部４３１から出力されるアドレスを、セットの単位アドレス分増加させる。
【０１４０】
＜まとめ＞
以上説明したように、ＴＡＣ４は、プロセッサ１が予め定められた命令を実行することによってキャッシュデータの転送及び属性操作に関するコマンドを与えられ、そのコマンドに応じて６種類の動作プリミティブ及びオートクリーナ操作をキャッシュメモリ３に要求し、キャッシュメモリ３は、プロセッサ１からのメモリアクセスに応じて従来の一般的なキャッシングを行う合間に、ＴＡＣ４からの要求に応じた操作を実行する。
【０１４１】
この６種類の動作プリミティブ及びオートクリーナ操作は、キャッシュのヒット率の向上、不必要なバストランザクションの削減、及びバストランザクションの平準化（時間的分散）に効果があり、かつ前記予め定められた命令（例えば、図１０、図１１、図１２を参照）をプロセッサ１に実行させることでソフトウェアから要求できる。従って、キャッシュ効率の向上を図る上でソフトウェアからの積極的な制御下でこれらの操作を行うために、この構成は好適である。
【０１４２】
また、そのような特定の命令は、コンパイラによりプログラム中に挿入してもよい。具体的に、コンパイラは、データの生存期間を判断するなどしてデータが最初にアクセスされるプログラム位置を知ってその前にフィル操作を要求するコマンドを挿入し、また、同様にしてそれ以降データに書き込みがなされないプログラム位置を知ってその後に最古化を要求するコマンドを挿入するといったことが考えられる。
【０１４３】
キャッシュメモリ３が行う６種類の動作プリミティブ及びオートクリーナ操作の内容を鑑みれば、プロセッサからのメモリアクセスに応じた一般的なキャッシング操作を行う従来のハードウェアに大規模な追加、修正を施すことなく、キャッシュメモリ３を実現できる。
【０１４４】
ＴＡＣ４もまた、プロセッサ１からのコマンド取得、コマンドのキューイングと選択、複数のアドレスに対する要求の逐次発生、及びキャッシュメモリ３への要求の転送管理といった簡明な機能のみを果たす。
【０１４５】
ハードウェアをこの程度に簡素化しかつソフトウェアからの制御を受け入れるために好ましい構成とすることによって、ハードウェアとソフトウェアとの良好な機能分担が可能となり、その結果、自律的な制御によるキャッシュ効率の向上を目指してハードウェアがいたずらに大規模化する事態を回避することができる。
【産業上の利用可能性】
【０１４６】
本発明は、ソフトウェアからの制御性を向上するキャッシュメモリに利用可能であり、例えば、オンチップキャッシュメモリ、オフチップキャッシュメモリ、データキャッシュメモリ、命令キャッシュメモリ等に適用できる。
【図面の簡単な説明】
【０１４７】
【図１】図１は、本発明の実施の形態に係るプロセッサ、キャッシュメモリ、メモリ、ＴＡＣを含むコンピュータシステムの全体構成例を示すブロック図である。
【図２】図２は、キャッシュメモリの構成例を示すブロック図である。
【図３】図３は、使用フラグの更新例を示す図である。
【図４】図４（ａ）はウィークフラグが存在しない場合にキャッシュエントリがリプレースされる様子を示す図であり、図４（ｂ）はリプレース処理におけるウィークフラグＷの役割を示す説明図である。
【図５】図５は、キャッシュメモリにおける動作プリミティブ処理の一例を示すフローチャートである。
【図６】図６は、キャッシュメモリにおけるオートクリーナ処理の一例を示すフローチャートである。
【図７】図７は、変形例に係るキャッシュエントリの構成例を示す図である。
【図８】図８は、キャッシュメモリとＴＡＣとの間のインタフェースの一例を示す図である。
【図９】図９は、ＴＡＣの構成例を示すブロック図である。
【図１０】図１０（ａ）は、動作プリミティブレジスタにコマンドを書き込む命令の一例を示す図であり、図１０（ｂ）は、コマンドの一例を示す図である。
【図１１】図１１（ａ）は、スタートアドレスレジスタにスタートアドレスを書き込む命令の一例を示す図であり、図１１（ｂ）は、サイズレジスタにサイズを書き込む命令の一例を示す図であり、図１１（ｃ）は、コマンドレジスタにコマンドを書き込む命令の一例を示す図であり、図１１（ｄ）は、コマンドの一例を示す図である。
【図１２】図１２（ａ）は、ＴＡＣコントロールレジスタにコマンドを書き込む命令の一例を示す図であり、図１２（ｂ）は、コマンドの一例を示す図である。
【図１３】図１３は、アドレス調整の内容を説明する概念図である。
【図１４】図１４は、アドレス保持部の構成を示すブロック図である。
【図１５】図１５は、領域コマンド制御部における領域コマンド制御処理の一例を示すフローチャートである。
【図１６】図１６は、命令連動コマンド制御部における命令連動コマンド制御処理の一例を示すフローチャートである。
【図１７】図１７は、オートクリーナ制御部におけるオートクリーナ制御処理の一例を示すフローチャートである。
【図１８】図１８は、操作要求部における操作要求処理の一例を示すフローチャートである。
【符号の説明】
【０１４８】
１    プロセッサ
２    メモリ
３    キャッシュメモリ
４    ＴＡＣ
２０    アドレスレジスタ
２１    メモリＩ／Ｆ
２２    デマルチプレクサ
３０    デコーダ
３１ａ〜３１ｄ  ウェイ
３２ａ〜３２ｄ  比較器
３３ａ〜３３ｄ  アンド回路
３４    オア回路
３５    セレクタ
３６    セレクタ
３７    デマルチプレクサ
３８    制御部
４０    コマンドエントリ部
４１    領域コマンド制御部
４２    命令連動コマンド制御部
４３    オートクリーナ制御部
４４    操作要求部
４０１    動作プリミティブレジスタ
４０２    スタートアドレスレジスタ
４０３    サイズレジスタ
４０４    コマンドレジスタ
４０５    ＴＡＣコントロールレジスタ
４１１    アドレス調整部
４１２    コマンド保持部
４１３    コマンド選択部
４２１    アドレス調整部
４２２    コマンド保持部
４２３    実行判断部
４２４    コマンド選択部
４２５    実効アドレス生成部
４３１    クリーニングアドレス出力部
【図１】
0004090497.tif 000002
【図２】
0004090497.tif 000003
【図３】
0004090497.tif 000004
【図４】
0004090497.tif 000005
【図５】
0004090497.tif 000006
【図６】
0004090497.tif 000007
【図７】
0004090497.tif 000008
【図８】
0004090497.tif 000009
【図９】
0004090497.tif 000010
【図１０】
0004090497.tif 000011
【図１１】
0004090497.tif 000012
【図１２】
0004090497.tif 000013
【図１３】
0004090497.tif 000014
【図１４】
0004090497.tif 000015
【図１５】
0004090497.tif 000016
【図１６】
0004090497.tif 000017
【図１７】
0004090497.tif 000018
【図１８】
0004090497.tif 000019