(57)【要約】【課題】キャッシュメモリを有効に利用することができるキャッシュメモリ制御回路およびキャッシュメモリ管理方法を提供すること【解決手段】本発明にかかるキャッシュメモリ制御回路は、セットアソシアティブ方式によって、メインメモリ７１に記憶されるデータをキャッシュメモリに記憶するキャッシュメモリ制御回路である。キャッシュメモリに記憶するデータのメインメモリ７１上のアドレスを示すアドレス情報を含み、セットアドレスのそれぞれに対応するエントリと、メインメモリ上のアドレス値であって、セットアドレス以外の値のいずれかに応じて、エントリ内をさらに区分してアドレス情報を格納するか否かを示し、エントリのそれぞれに対応するフラグを格納するキャッシュ情報格納部を備える。【選択図】図２
2010170292.tif 000002
【特許請求の範囲】
【請求項１】
セットアソシアティブ方式によって、メインメモリに記憶されるデータをキャッシュメモリに記憶するキャッシュメモリ制御回路であって、
前記キャッシュメモリに記憶するデータの前記メインメモリ上のアドレスを示すアドレス情報を含み、セットアドレスのそれぞれに対応するエントリと、
前記メインメモリ上のアドレス値であって、前記セットアドレス以外の値のいずれかに応じて、エントリ内をさらに区分して前記アドレス情報を格納するか否かを示し、前記エントリのそれぞれに対応するフラグを格納するキャッシュ情報格納部を備えたキャッシュメモリ制御回路。
【請求項２】
前記キャッシュメモリ制御回路は、前記エントリに含まれるアドレス情報の値に応じて、当該エントリに対応するフラグを変更する構成判定部をさらに備えた請求項１に記載のキャッシュメモリ制御回路。
【請求項３】
前記構成判定部は、前記エントリに含まれるアドレス情報のスワップが発生する場合に、前記フラグを変更する請求項２に記載のキャッシュメモリ制御回路。
【請求項４】
前記エントリは、前記フラグが有効である場合、前記セットアドレス以外の値のうちの所定ビットがとり得る値のそれぞれに対応するように区分され、当該区分には対応付けられた前記所定ビット値と前記所定ビット値が一致する前記アドレス情報を格納する請求項３に記載のキャッシュメモリ制御回路。
【請求項５】
前記構成判定部は、前記フラグが無効であり、前記エントリに前記所定ビット値が異なるアドレス情報が混在している場合に、前記フラグを有効とする請求項４に記載のキャッシュメモリ制御回路。
【請求項６】
前記構成判定部は、前記フラグが有効であり、前記スワップによって新たに格納する前記アドレス情報の前記所定ビット値と異なる値に対応する区分に前記アドレス情報が格納されていない場合に、前記フラグを無効とする請求項４又は５に記載のキャッシュメモリ制御回路。
【請求項７】
前記エントリは、Ｎ(Ｎは正整数)ウェイのアドレス情報が含まれ、前記フラグが有効である場合、それぞれがＮ/Ｍ(Ｍは、前記所定ビットが取り得る値の数)ウェイに区分される請求項４乃至６のいずれかに記載のキャッシュメモリ制御回路。
【請求項８】
前記キャッシュメモリ制御回路は、コヒーレンシを保障するために使用されるディレクトリをさらに備え、
前記ディレクトリは、前記キャッシュ情報格納部を有する請求項１乃至７のいずれかに記載のキャッシュメモリ制御回路。
【請求項９】
セットアソシアティブ方式により、キャッシュメモリに記憶するデータのアドレスを管理するアドレス管理方法であって、
前記アドレス値であって、セットアドレス以外の値のいずれかに応じて、さらにエントリを区分して格納するか否かを示すフラグをエントリ毎に設定するステップと、
前記フラグに応じて、前記アドレスを管理するステップとを備えたアドレス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はキャッシュメモリ制御回路およびキャッシュメモリ管理方法に関する。
【背景技術】
【０００２】
共有メモリ型マルチプロセッサシステムには、キャッシュメモリを有する複数のプロセッサ間のコヒーレンシを保障するコヒーレンシ制御回路がある。コヒーレンシ制御回路は、プロセッサのキャッシュメモリの状態を格納するディレクトリやコピーキャッシュ等を有する。
また、共有メモリ型マルチプロセッサシステムにおいては、Ｎ（Ｎは正整数）ウェイセットアソシアティブ方式のディレクトリを搭載する場合がある。このディレクトリに、フルアソシアティブ方式を採用した場合は、キャッシュメモリのキャッシュラインに記憶するアドレスの制限がなくなる一方、必要なハードウェア量も増大してしまう。そのため、複数レベルのキャッシュメモリによるＮウェイセットアソシアティブ方式が用いられることが多い。
【０００３】
しかし、Ｎウェイセットアソシアティブ方式におけるウェイ数と、キャッシュラインに対応し、インデックスとなるアドレス（以下、「セットアドレス」とする）数は固定的であった。一方、システムやアプリケーションによって、キャッシュメモリを有効に利用することができるウェイ数やセットアドレス数が異なる場合がある。そのため、ウェイ数やセットアドレス数が固定されている場合、システムやアプリケーションによってはキャッシュメモリが有効に利用されないことがあった。つまり、システムやアプリケーショによって、セットアドレス数を多くしたい場合やウェイ数を多くしたい場合などがある。
また、共有メモリ型マルチプロセッサシステムは、複数のプロセッサから構成され、これらのプロセッサのそれぞれが実行するアプリケーションの処理が混在するため、アプリケーションの動作状態に応じて、ウェイ数やセットアドレス数を変更することができるディレクトリを備えることが望まれている。
【０００４】
これらのことから、セットアソシアティブ方式のディレクトリにおいて、キャッシュメモリの使用状況に応じて、ハードウェアにおいて動的にかつ簡易的にキャッシュメモリの利用方法を変更することができれば、キャッシュメモリを有効に利用することができると考えられる。
なお、特許文献１、２、４、５には、セットアソシアティブ方式のキャッシュメモリ制御に関する技術が開示されている。
また、特許文献３には、キャッシュメモリのタグ部に対するセットアドレスを最適に設定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−０２０３９６号公報
【特許文献２】特開２００５−２９３３００号公報
【特許文献３】特開平０４−０９６８４３号公報
【特許文献４】特開平０５−０４０６９４号公報
【特許文献５】特開平０５−２４１９６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
背景技術として説明したように、セットアソシアティブ方式においては、ウェイ数やセットアドレス数が固定されている場合は、キャッシュメモリが有効に利用されないという問題があった。
【０００７】
本発明の目的は、上述した課題を解決するためになされたものであり、キャッシュメモリを有効に利用することができるキャッシュメモリ制御回路およびキャッシュメモリ管理方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明にかかるキャッシュメモリ制御回路は、セットアソシアティブ方式によって、メインメモリに記憶されるデータをキャッシュメモリに記憶するキャッシュメモリ制御回路であって、前記キャッシュメモリに記憶するデータの前記メインメモリ上のアドレスを示すアドレス情報を含み、セットアドレスのそれぞれに対応するエントリと、前記メインメモリ上のアドレス値であって、前記セットアドレス以外の値のいずれかに応じて、エントリ内をさらに区分して前記アドレス情報を格納するか否かを示し、前記エントリのそれぞれに対応するフラグを格納するキャッシュ情報格納部を備えたものである。
【発明の効果】
【０００９】
本発明により、キャッシュメモリを有効に利用することができるキャッシュメモリ制御回路およびキャッシュメモリ管理方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態にかかるマルチプロセッサシステムの全体構成を示すブロック図である。
【図２】本発明の実施の形態にかかるコヒーレンシ制御回路の内部構成を示すブロック図である。
【図３】本発明の実施の形態にかかるディレクトリ内容の概念図である。
【図４】本発明の実施の形態にかかるフラグとキーアドレス値の関係を示す図である。
【図５】本発明の実施の形態にかかるコヒーレンシ制御回路の動作を示すフローチャートである。
【図６】本発明の実施の形態にかかる異なるセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。
【図７】本発明の実施の形態にかかる同じセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。
【図８】本発明の実施の形態にかかるフラグ有効化を判定する処理を示すフローチャートである。
【図９】本発明の実施の形態にかかるフラグ無効化を判定する処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態について説明する。
図１は、本発明の実施の形態にかかるマルチプロセッサシステムの全体構成を示すブロック図である。
マルチプロセッサシステムは、セル１１、１２を備える。
【００１２】
セル１１は、キャッシュメモリ３１、３２を有するプロセッサ２１、２２、メモリ７１及びディレクトリ６１を有するコヒーレンシ制御回路５１を含む。また、プロセッサ２１、２２やメインメモリ７１間は、相互に接続手段４１、４２、４３によって接続される。
プロセッサ２１、２２は、メインメモリ７１、７２に記憶されるデータをキャッシュメモリ３１、３２に記憶して、そのデータに基づいて演算処理を実行する。
キャッシュメモリ３１、３２は、メインメモリ７１、７２のデータを記憶する。
コヒーレンシ制御回路５１は、プロセッサ間のコヒーレンシを保証するための制御を行う。また、コヒーレンシ制御回路５１は、セル１２のコヒーレンシ制御回路５２と接続手段８１によって接続され、セル１２のプロセッサ２３、２４及びメインメモリ７２へのアクセスが可能である。接続手段４１、４２、４３、８１は、例えば、バスである。
ディレクトリ６１は、セットアソシアティブ方式のディレクトリであり、キャッシングされるデータのメインメモリ７１上におけるアドレスを示すアドレス情報をキャッシュラインに対応するセットアドレス毎に格納する。また、アドレス情報はセットアドレスのそれぞれに対応する単位を１エントリとし、ディレクトリ６１にはセットアドレス数のエントリが格納される。なお、ディレクトリ６１は、キャッシュ情報格納部に相当する。
メインメモリ７１は、プロセッサ２１、２２、２３、２４によって共有可能なメモリである。
【００１３】
セル１２は、キャッシュメモリ３３、３４を有するプロセッサ２３、２４、メモリ７２及びディレクトリ６２を有するコヒーレンシ制御回路５２を含む。
なお、セル１２の構成要素は、セル１１と同様であるため、説明を省略する。
ここで、ディレクトリ６１、６２は、セットアソシアティブ方式のディレクトリであるため、新たにキャッシュメモリにデータを記憶する場合にディレクトリ６１、６２に空きがない場合はスワップを行う必要がある。
本実施の形態におけるスワップとは、セットアソシアティブ方式を採用するディレクトリにおいて生じる処理である。詳しくは、新たにキャッシュメモリに記憶するデータのアドレス情報を、ディレクトリに対して格納する必要が生じたときに、これを格納する領域がディレクトリに存在しない場合は、ディレクトリに既に格納されているアドレス情報のいずれかを排除し、新たなアドレス情報を格納するための空き領域を生成する。この既に格納されている情報を排除する処理がスワップである。このとき、ディレクトリからスワップしたアドレス情報に対応し、キャッシュメモリに記憶されているデータについても、コヒーレンシを保つために無効化を行う。
【００１４】
図２は、本発明の実施の形態にかかるコヒーレンシ制御回路の内部構成を示すブロック図である。ここでは、セル１１のコヒーレンシ制御回路５１について説明する。なお、セル１２のコヒーレンシ制御回路５２の構成要素は、コヒーレンシ制御回路５１と同様であるため説明を省略する。
コヒーレンシ制御回路５１は、ディレクトリ６１、トランザクション制御部１０１、ディレクトリアクセス制御部１０２、ディレクトリ構成変更判定部１０５及びフラグ制御機能１０７を有するディレクトリ索引更新制御部１０６を備える。
ディレクトリ６１は、ＨＭ０(１０３)及びＨＭ１(１０４)の２つのハードマクロを含む。ハードマクロは、セットアドレス数のエントリから構成され、1つのハードマクロには２ウェイのアドレス情報が入る。２つのハードマクロを含むディレクトリ６１は、合計４ウェイのアドレス情報を格納する。
【００１５】
トランザクション制御部１０１は、プロセッサ２１、２２、セル１２及びメインメモリ７２とのトランザクションの送受信を行う。
ここで、トランザクションは、例えば、プロセッサ２１がメインメモリ７１の任意のアドレスに記憶されているデータにアクセスする場合、このアドレスを指定してトランザクション制御部１０１に対して出力される。これに応じて、トランザクション制御部１０１は、後に詳述するコヒーレンシ制御回路５１の処理の結果に基づいて、任意のアドレスに記憶されているデータをメインメモリ７１もしくはキャッシュメモリ３１、３２、３３、３４のいずれから取得したらよいかを答えるトランザクションをプロセッサ２１に出力する。
なお、トランザクション制御１０１は、ディレクトリ６１に関するトランザクション、つまり、メインメモリ７１のアクセスに関するトランザクションを受信した場合に、このトランザクションをディレクトリアクセス制御部１０２に出力する。
【００１６】
その他に、トランザクション制御１０１は、ディレクトリ索引更新制御部１０６からスワップ発行指示を受けると、スワップ発行指示が示すアドレスのキャッシュ無効化トランザクションを生成してプロセッサ２１、２２やセル１２を介してプロセッサ２３，２４に出力する。キャッシュ無効化トランザクションの出力を受けたプロセッサは、キャッシュメモリに記憶され、キャッシュ無効化トランザクションが示すアドレスのデータを無効化する。
【００１７】
ディレクトリアクセス制御部１０２は、トランザクション制御部１０１から受信したトランザクションに含まれるアドレスがディレクトリ６１に管理されているかどうかを調べるために、このアドレスに対応するエントリを読み出すための読み出し指示をＨＭ０(１０３)及びＨＭ１(１０４)に出力する。また、ディレクトリアクセス制御部１０２は、ディレクトリ索引更新制御部１０６からディレクトリ更新指示を受けた場合、ディレクトリ６１に書き込みを行う等のディレクトリ６１を管理する制御を行う。
ＨＭ０(１０３)及びＨＭ１(１０４)は、ハードマクロであり、ディレクトリアクセス制御部１０２から、読み出し指示の出力を受けた場合、エントリの読み出しデータをディレクトリ索引更新制御部１０６に出力する。
【００１８】
ディレクトリ構成変更判定部１０５は、ディレクトリアクセス制御部１０２における競合情報やディレクトリ索引更新制御部１０６のエントリの読み出しデータ等に基づいて、ハードマクロの使用方法を変更するかどうかの判定を行う。その判断の結果に応じて、ディレクトリ構成変更判定部１０５は、ディレクトリ索引更新制御部１０６に変更指示を出力する。なお、競合情報については、後に詳述する。
【００１９】
ディレクトリ索引更新制御部１０６は、ＨＭ０(１０３)及びＨＭ１(１０４)から出力されたエントリの読み出しデータに基づいて、トランザクション制御部１０１が受けたトランザクションに含まれるアドレスの索引結果をトランザクション制御部１０１に出力する。また、ディレクトリ索引更新制御部１０６は、ディレクトリ６１に書き込むディレクトリ更新データを生成して、ディレクトリアクセス制御部１０２にディレクトリ更新データと共にディレクトリ更新指示を出力する。
【００２０】
その他に、ディレクトリ索引更新制御部１０６は、ディレクトリ６１に空きがなく、スワップが必要な場合、スワップするアドレス情報に対応するデータのキャッシュ無効化トランザクションをプロセッサ２１、２２、２３，２４に出力するように指示するスワップ発行指示をトランザクション制御部１０１に出力する。また、ディレクトリ索引更新制御部１０６は、エントリの読み出しデータをディレクトリ構成変更判定部１０５に出力する。
【００２１】
フラグ制御機能１０７は、ディレクトリ構成変更判定部１０５からの変更指示やエントリの読み出しデータに含まれるフラグの状態に基づいて、スワップするアドレス情報の選択や、ディレクトリ６１に新たなアドレス情報を登録するウェイの選択の方法を変更する制御を行う。
詳しくは、ディレクトリ６１に新たなアドレス情報を登録するときに、フラグが無効を示している、言い換えると、全てのハードマクロをウェイ方向に使用することを示している。この場合、１エントリに含まれるＨＭ０(１０３)及びＨＭ１(１０４)の全４ウェイの中から４ウェイセットアソシアティブ方式により、ＬＲＵ法等に従って、アドレス情報を登録するウェイを選択する。
フラグが有効を示している、言い換えると、全てのハードマクロをセットアドレス方向に使用することを示している。この場合、１エントリに含まれるＨＭ０(１０３)及びＨＭ１(１０４)のそれぞれを別々の２ウェイとして扱い、どちらかの２ウェイの中から２ウェイセットアソシアティブ方式により、ＬＲＵ法等に従って、アドレス情報を登録するウェイを選択する。なお、フラグが有効な場合、ＨＭ０(１０３)及びＨＭ１(１０４)は、セットアドレスに１bitの拡張セットアドレスを加えたアドレスをセットアドレスとみなして使用する。フラグについては、後に詳述するが、エントリ毎にその値を判断することができる。
【００２２】
図３は、本発明の実施の形態にかかるディレクトリ内容の概念図である。ディレクトリ６１、６２はメインメモリ７１、７２のキャッシュラインに対応するアドレス情報を１エントリとして、セットアドレス数のエントリを格納する。図３は、ディレクトリ６１の１エントリあたりのＨＭ０(１０３)のウェイ０をディレクトリ２０６として説明するものである。つまり、ディレクトリ２０６は、ディレクトリ６１の１エントリのうちの１ウェイ当たりの構成を示す。なお、その他のエントリ、ハードマクロ及びウェイにおけるディレクトリ２０６についても構成は同様であるため説明を省略する。ディレクトリ２０６は、アドレス情報に相当する。
【００２３】
ディレクトリ２０６は、キーアドレス２０１、ステータス情報２０３、エージェント情報２０４及びフラグ２０５を含む。
セットアドレス２０２は、キャッシュメモリ３１、３２、３３、３４に記憶されるデータのメインメモリ７１上におけるアドレスのうちの所定のビット部分の値を格納する。ディレクトリ６１のエントリのインデックスとして用いられる。セットアドレス２０２に基づいて、トランザクションに含まれるアドレスに対応するエントリを特定することで、ディレクトリ２０６の索引や更新を行うことができる。
【００２４】
キーアドレス２０１は、キャッシュメモリ３１、３２、３３、３４に記憶されるデータのメインメモリ７１上におけるアドレスからセットアドレス２０２を除いたビット部分の値を格納する。
本実施の形態においては、アドレスの最上位bit番号をm、キーアドレスの最下位bit番号をkとすると、アドレスはm:０、キーアドレスはm:k、セットアドレスはk−１:０となる。
ステータス情報２０３は、ディレクトリ２０６のキーアドレス２０１及びセットアドレス２０２から構成されるアドレスが示すデータのキャッシング状態を示す。ステータス情報２０６は、データがキャッシュメモリに記憶されているかどうかを示す値を格納する。
エージェント情報２０４は、アドレスが示すデータをキャッシングしているキャッシュメモリを有するプロセッサの位置を示す情報である。
【００２５】
フラグ２０５は、ディレクトリ２０６が含まれるエントリにおけるハードマクロをウェイ方向もしくはセットアドレス方向のどちらで使用するかを示す。本実施の形態においては、エントリ内のいずれかのウェイのフラグが有効である場合に、フラグが有効であると判断し、そのエントリにおけるハードマクロの使用方法を変更する。
図４は、本発明の実施の形態にかかるフラグとキーアドレス値の関係を示す図である。
エントリ内の全てのフラグの値が０であり無効を示している場合、このエントリのＨＭ０(１０３)及びＨＭ１(１０４)を４ウェイのディレクトリ構成として使用する。
エントリ内のいずれかのフラグ２０５の値が１であり有効を示している場合、このエントリのＨＭ０(１０３)はキーアドレス２０１の最下位アドレスbit kが０、ＨＭ１(１０４)はキーアドレス２０１の最下位アドレスbit kが１として、それぞれを２ウェイの構成として使用する。つまり、セットアドレスに加えて、最下位アドレスbit kの値に応じて、エントリを区分してアドレス情報を格納するようにする。
なお、本実施の形態におけるエントリとは、フラグの値に関係なく、ディレクトリ６１におけるセットアドレス２０２の値が同じ４ウェイ分のデータを示す。また、フラグ２０５は、ウェイ単位でなく、エントリ単位で用意してもよい。
【００２６】
本発明の実施の形態にかかるコヒーレンシ制御回路の動作を示すフローチャートである。図５は、本発明の実施の形態にかかるコヒーレンシ制御回路の動作を示すフローチャートである。
まず、コヒーレンシ制御回路５１のトランザクション制御部１０１は、プロセッサ２１２２やセル１２からトランザクションの出力を受けた場合に、ディレクトリ６１へのアクセスが必要なときは、このトランザクションをディレクトリアクセス制御部１０２に出力する。なお、ディレクトリ６１へのアクセスが必要でないときは、トランザクションがメインメモリ７２へのアクセスが示しているときとなる。この場合は、コヒーレンシ制御回路５１は、コヒーレンシ制御回路５２にトランザクションを転送する。
【００２７】
ディレクトリアクセス制御部１０２は、トランザクション制御部１０１からトランザクションの出力を受けると、トランザクションアドレスに含まれるアドレスのセットアドレスに対応するエントリを読み出すために、このセットアドレスを指定して読み出し指示をＨＭ０(１０３)及びＨＭ１(１０４)に出力する。また、ディレクトリアクセス制御部１０２は、トランザクションをディレクトリ索引更新制御部１０６に出力する。
ＨＭ０(１０３)及びＨＭ１(１０４)は、ディレクトリアクセス制御部１０２から読み出し指示の出力を受けると、指定されたセットアドレスに対応するエントリの読み出しデータをディレクトリ索引更新制御部１０６に出力する。
【００２８】
フラグ制御機能１０７は、ＨＭ０(１０３)とＨＭ１(１０４)から出力されたエントリの読み出しデータに格納されたキーアドレス２０１とトランザクションに含まれるアドレスのキーアドレスが一致しているものを探す。
一致したものがなかった場合、ディレクトリ索引更新制御部１０６は、その旨をトランザクション制御部１０１に出力する。
この場合は、キャッシュメモリ３１、３２、３３、３４にトランザクションに含まれるアドレスのデータが記憶されてないことを示す。よって、トランザクション制御部１０１は、トランザクションの出力元に対して、メインメモリ７１からデータを取得する旨のトランザクションを出力する。
【００２９】
一致したものがあった場合、ディレクトリ索引更新制御部１０６は、一致したウェイに含まれるステータス情報２０３やエージェント情報２０４をトランザクション制御部１０１に出力する。
この場合は、キャッシュメモリ３１、３２、３３、３４にトランザクションに含まれるアドレスのデータが記憶されていることを示す。
ここで、トランザクション制御部１０１は、ステータス情報２０３には、キャッシュメモリ３１、３２、３３、３４にキャッシングされたデータとメインメモリ７１のデータの内容が一致しているかどうかを示す情報も格納することができる。これにより、ステータス情報２０３が一致を示している場合はメインメモリ７１からデータを取得する旨を、ステータス情報２０３が一致を示していない場合はエージェント情報２０４が示すプロセッサのキャッシュメモリからデータを取得する旨のトランザクションを出力する。
まず、トランザクションの出力を受けると、上述したような索引制御が行われる(Ｓ３０１)。
【００３０】
また、フラグ制御機能１０７は、エントリの読み出しデータのフラグ２０５を確認する(Ｓ３０２)。
フラグ２０５の値が０であり無効の場合、ディレクトリ索引更新制御部１０６は、ディレクトリ構成変更判定部１０５からのフラグ有効化指示を確認する(Ｓ３０４)。
フラグ有効化指示がなかった場合、ディレクトリ索引更新制御部１０６は、ディレクトリ６１のＨＭ０(１０３)とＨＭ１(１０４)を同じセットアドレス制御とした４ウェイのディレクトリ更新制御を行う(Ｓ３０７)。そして、ディレクトリ索引更新制御部１０６は、ディレクトリ６１に書き込むディレクトリ更新データを生成して、ディレクトリアクセス制御部１０２に、ディレクトリ更新データとディレクトリ更新指示を出力する。ディレクトリ更新指示の出力を受けたディレクトリアクセス制御部１０２は、ディレクトリ６１にディレクトリ更新データを書き込む(Ｓ３０９)。ステップＳ３０９の処理により、例えば、新たにキャッシュメモリに記憶するデータのアドレス情報が登録される。
【００３１】
フラグ２０５の値が０であり無効の場合に、フラグ有効化指示があったとき(Ｓ３０６)、ディレクトリ索引更新制御部１０６は、ＨＭ０(１０３)とＨＭ１(１０４)を異なるセットアドレスとした２ウェイのディレクトリ更新制御を行う(Ｓ３０８)。そして、ディレクトリ索引更新制御部１０６は、フラグを有効にするディレクトリ更新データを生成して、ディレクトリアクセス制御部１０２に、ディレクトリ更新データとディレクトリ更新指示を出力する。ディレクトリ更新指示の出力を受けたディレクトリアクセス制御部１０２は、ディレクトリ６１にディレクトリ更新データを書き込む(Ｓ３０９)。
なお、ステップＳ３０７、Ｓ３０８におけるにディレクトリ更新制御の動作については、後に詳述する。
【００３２】
一方、フラグ２０５の値が1であり有効の場合、ディレクトリ索引更新制御部１０６は、ディレクトリ構成変更判定部１０５からのフラグ無効化指示を確認する(Ｓ３０３)。
フラグ無効化指示がなかった場合、ディレクトリ索引更新制御部１０６は、フラグ２０５は有効のままとして(Ｓ３０６)、ＨＭ０(１０３)とＨＭ１(１０４)を異なるセットアドレスとしたディレクトリ更新制御を行う(Ｓ３０８)。そして、上述と同様に、ディレクトリ更新をする(Ｓ３０９)。
【００３３】
フラグ２０５の値が1であり有効な場合に、フラグ無効化指示があったとき(Ｓ３０５)、ディレクトリ索引更新制御部１０６は、ＨＭ０(１０３)とＨＭ１(１０４)を同じセットアドレス制御としたディレクトリ更新制御を行う(Ｓ３０７)。そして、ディレクトリ索引更新制御部１０６は、フラグを無効にするディレクトリ更新データを生成して、ディレクトリアクセス制御部１０２に、ディレクトリ更新データとディレクトリ更新指示を出力する。そして、上述と同様に、ディレクトリ更新をする(Ｓ３０９)。
【００３４】
図６は、本発明の実施の形態にかかる異なるセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。図５におけるステップＳ３０８の処理について示したものである。ここでは、例として、キーアドレス２０１の最下位bit kの値が０であるアドレスのトランザクションを処理する場合について説明する。
【００３５】
まず、フラグ制御機能１０７は、エントリの読み出しデータにトランザクションのキーアドレス２０１と一致するキーアドレスを格納するウェイがあるかを確認する(Ｓ４０１)。
一致するウェイがあった場合、フラグ制御機能１０７は、トランザクションに含まれるアドレスのキーアドレス２０１の最下位bit kの値が０であるため、bit kの値が０として扱われるＨＭ０(１０３)に一致したウェイがあるかどうかを確認する(Ｓ４０２)。
【００３６】
ＨＭ０(１０３)に一致するウェイがあった場合、フラグ制御機能１０７は、そのウェイを選択する(Ｓ４０３)。
そして、ディレクトリ索引更新制御部１０６は、そのウェイを更新するためのディレクトリ更新データを生成して(Ｓ４１１)、ディレクトリ６１の更新を行う。
ここで、一致するウェイがあった場合であっても、そのウェイのエージェント情報２０４が示すプロセッサと異なるプロセッサからのトランザクションであったときは、エージェント情報２０４の更新が必要となるため、ウェイの更新を行っている。なお、ウェイの内容に変更が全くない場合には、ステップＳ４１１を行わないようにしてもよい。後に詳述する図７のステップＳ５０７についても同様である。
【００３７】
一方、一致するウェイがあった場合であっても、bit kの値が１として扱われるＨＭ１(１０４)に一致したウェイがあったときは、ディレクトリ６１を更新する際には一致したＨＭ１(１０４)のウェイを無効化して、ＨＭ０(１０３)に移動させる必要がある。その場合、ディレクトリ索引更新制御部１０６は、ＨＭ１(１０４)のアドレス一致したウェイを無効化するためのディレクトリ書き込みデータの作成(Ｓ４１０)と、ＨＭ０(１０３)を更新するディレクトリ書き込みデータの作成を並行して行う。
ここで、このＨＭ０(１０３)を更新するディレクトリ書き込みデータの作成は、ディレクトリ６１に一致するアドレスがなかった場合と同様のステップＳ４０４以降の処理によって行う。
【００３８】
一致するウェイがなかった場合、フラグ制御機能１０７は、更新対象となるＨＭ０(１０３)に、使用されていないウェイがあるかどうかを調べる（Ｓ４０４）。
使用されていないウェイがある場合、フラグ制御機能１０７は、空きウェイを選択する(Ｓ４０５)。
そして、ディレクトリ索引更新制御部１０６は、そのウェイに対するディレクトリ書き込みデータを作成して(Ｓ４１１)、ディレクトリ６１の更新を行う。
使用されていないウェイがない場合、フラグ制御機能１０７は、更新対象となるＨＭ０(１０３)に、ＨＭ１(１０４)に格納されるべきウェイ、つまりbit kの値が１であるウェイがあるかどうかを調べる(Ｓ４０６)。
【００３９】
bit kの値が１であるウェイがある場合、フラグ制御機能１０７は、そのウェイを選択する(Ｓ４０８)。
bit kの値が１であるウェイがなかった場合、フラグ制御機能１０７は、ＨＭ０(１０３)からＬＲＵ法等により書き込むウェイを選択する(Ｓ４０７)。また、ディレクトリ索引更新制御部１０６は、ステップＳ４０７もしくはＳ４０８において選択したウェイに格納されたアドレスのキャッシュを無効化するために、そのアドレスを含んだスワップ発行指示をトランザクション制御部１０１に出力する(Ｓ４０９)。そして、選択したウェイを更新するためのディレクトリ更新データを生成して(Ｓ４１１)、ディレクトリ６１の更新を行う。
【００４０】
このとき、ステップＳ４１０の制御を並行して実施していた場合は、無効化するＨＭ１(１０４)のウェイの更新も同時に行う。ここで、ステップＳ４０８、Ｓ４１０の処理は、フラグ２０５が有効化されたあと、ＨＭ０(１０３)にbit kの値が１のウェイがある又はＨＭ１(１０４)にbit kの値が０のウェイがあり、ＨＭ０(１０３)及びＨＭ１(１０４)に格納されるデータの振り分けが完全になされるまでの間の過渡期に発生することとなる。
【００４１】
図７は、本発明の実施の形態にかかる同じセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。図５におけるステップＳ３０７の処理について示したものである。
まず、フラグ制御機能１０７は、エントリの読み出しデータにトランザクションのキーアドレスと一致するキーアドレス２０１を格納するウェイがあるかを確認する(Ｓ５０１)。
一致するウェイがあった場合、フラグ制御機能１０７は、そのウェイを選択する(Ｓ５０２)。
そして、ディレクトリ索引更新制御部１０６は、そのウェイを更新するためのディレクトリ更新データを生成して(Ｓ５０７)、ディレクトリ６１の更新を行う。
【００４２】
一致するウェイがなかった場合、フラグ制御機能１０７は、エントリの読み出しデータに使用されていないウェイがあるかどうかを調べる（Ｓ５０３）。
使用されていないウェイがある場合、フラグ制御機能１０７は、空きウェイを選択する(Ｓ５０４)。
そして、ディレクトリ索引更新制御部１０６は、そのウェイに対するディレクトリ書き込みデータを作成して(Ｓ５０７)、ディレクトリ６１の更新を行う。
【００４３】
使用されていないウェイがない場合、フラグ制御機能１０７は、エントリの読み出しデータからＬＲＵ法等により書き込むウェイを選択する(Ｓ５０５)。
そして、ディレクトリ索引更新制御部１０６は、選択したウェイに格納されたアドレスのキャッシュを無効化するために、そのアドレスを含んだスワップ発行指示をトランザクション制御部１０１に出力する(Ｓ５０６)。そして、選択したウェイを更新するためのディレクトリ更新データを生成して(Ｓ５０７)、ディレクトリ６１の更新を行う。
【００４４】
図８は、本発明の実施の形態にかかるフラグ有効化を判定する処理を示すフローチャートである。
まず、ディレクトリアクセス制御部１０２において、トランザクションの競合があった場合、その競合したトランザクションのそれぞれに含まれるアドレスのキーアドレスの最下位bit kの値が異なるかどうかを判定する(Ｓ６０１)。
ここで、本実施の形態における競合とは、あるトランザクションに対する処理の実行中に、そのトランザクションとセットアドレスが同じトランザクションをディレクトリアクセス制御部１０２が受けることをいう。なお、この場合は、ディレクトリアクセス制御部１０２において、先のトランザクションの処理が完了するまで、後続のトランザクションをキューイングする等して、処理を実行しないようにする。
【００４５】
bit kの値が同じ場合、ディレクトリ構成変更判定部１０５は、処理を終了する。
bit kの値が異なる場合、ディレクトリ構成変更判定部１０５は、ディレクトリ索引更新制御部１０６から出力されたエントリの読み出しデータにキーアドレスの最下位bit kの値が０と１のウェイが混在しているかどうかを判断する(Ｓ６０２)。
値が混在していない場合、ディレクトリ構成変更判定部１０５は、処理を終了する。
値が混在している場合、ディレクトリ構成変更判定部１０５は、ディレクトリアクセス制御部１０２から出力されたトランザクション及びエントリの読み出しデータに基づいて、スワップが必要かどうかを判断する(Ｓ６０３)。
【００４６】
スワップが必要な場合、ディレクトリ６１をセットアドレス方向に拡大した使用方法とした方がスワップの発生などの干渉が発生する可能性が低くなると判断し、ディレクトリ構成変更判定部１０５は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを有効化する変更指示をディレクトリ索引更新制御部１０６に出力する(Ｓ６０６)。
スワップが必要でない場合、ディレクトリ構成変更判定部１０５は、ディレクトリ構成変更判定部１０５が有するレジスタに、現在処理中のエントリを示す情報及び発生回数などを含む競合情報を格納する(Ｓ６０４)。このように発生回数は、エントリに関連付けて、エントリ毎にカウントする。
【００４７】
次に、ディレクトリ構成変更判定部１０５は、レジスタに格納した競合の発生回数が予め定めた規定回数に達したかどうかを判断する(Ｓ６０５)。
規定回数に達した場合、ディレクトリ構成変更判定部１０５は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを有効化する変更指示をディレクトリ索引更新制御部１０６に出力する(Ｓ６０６)。
規定回数に達していない場合、ディレクトリ構成変更判定部１０５は、処理を終了する。
なお、競合情報は、フラグを有効化する変更指示を出力したときや、一定期間内にレジスタが示すエントリに対するアクセス、つまりディレクトリアクセス制御部１０２による読み出しや更新がなかったときは無効にする。
【００４８】
図９は、本発明の実施の形態にかかるフラグ無効化を判定する処理を示すフローチャートである。
まず、ディレクトリアクセス制御部１０２において、トランザクションの競合があった場合、その競合したトランザクションのそれぞれに含まれるアドレスのキーアドレスの最下位bit kの値が異なるかどうかを判定する(Ｓ７０１)。
bit kの値が異なる場合、ディレクトリ構成変更判定部１０５は、処理を終了する。
bit kの値が同じ場合、ディレクトリ構成変更判定部１０５は、ディレクトリ索引更新制御部１０６から出力されたエントリの読み出しデータに、フラグ２０５が有効であるウェイがあるかどうかを判断する(Ｓ７０２)。
【００４９】
フラグ２０５が無効を示す場合、ディレクトリ構成変更判定部１０５は、処理を終了する。
フラグ２０５が有効を示す場合、ディレクトリ構成変更判定部１０５は、ディレクトリアクセス制御部１０２から出力されたトランザクション及びエントリの読み出しデータに基づいて、スワップが必要かどうかを判断する(Ｓ７０３)。
スワップが必要でない場合、ディレクトリ構成変更判定部１０５は、処理を終了する。
スワップが必要な場合、ディレクトリ構成変更判定部１０５は、エントリの読み出しデータに基づいて、現在処理中のトランザクションのキーアドレス２０１の最下位bit kと異なる値を格納対象としているハードマクロのウェイが使用されているかどうかを確認する(Ｓ７０４)。
【００５０】
使用されているウェイがない場合、ディレクトリ構成変更判定部１０５は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを無効化する変更指示をディレクトリ索引更新制御部１０６に出力する(Ｓ７０７)。
使用されているウェイがある場合、ディレクトリ構成変更判定部１０５は、現在処理中のトランザクションのキーアドレス２０１の最下位bit kが異なる値を格納対象としているハードマクロ側に対するアクセス、つまりディレクトリアクセス制御部１０２による更新が、予め定めた期間内に予め定めた規定回数あったかどうかを判断する(Ｓ７０５)。
【００５１】
なお、アクセス回数は、次のステップＳ７０６において競合情報をディレクトリ構成変更判定部１０５のレジスタに格納した以降に、ディレクトリ構成変更判定部１０５がアクセス回数をレジスタに格納することで判断可能とする。つまり、次のステップＳ７０６において競合情報を格納し、次にステップＳ７０５の処理を行ったときに、競合情報が格納されている場合に、レジスタに格納されているアクセス回数が有効と判断してステップＳ７０５の判断を行う。
【００５２】
アクセス回数が規定回数あった場合、ディレクトリ構成変更判定部１０５は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを無効化する変更指示をディレクトリ索引更新制御部１０６に出力する(Ｓ７０７)。
アクセス回数が規定回数なかった場合、ディレクトリ構成変更判定部１０５は、現在処理中のエントリを示す情報などを含む競合情報をディレクトリ構成変更判定部１０５のレジスタに格納する(Ｓ７０６)。なお、アクセス回数は、この競合情報のエントリに関連付けて、エントリ毎にカウントする。
また、競合情報は、フラグ無効化指示を出力したときや、一定期間内にレジスタが示すエントリに対するアクセス、つまりディレクトリアクセス制御部１０２による読み出しや更新がなかったときは無効にする。
【００５３】
以上にフラグを変更するかどうかの判定方法の一例を説明したが、ディレクトリ６１の使用状況を出力装置にモニタリングして、それに基づいてユーザがフラグを変更したいエントリを示す情報を入力装置から入力して、ディレクトリ構成判定部のレジスタに設定し、このエントリに関するトランザクションの処理するタイミングにディレクトリ構成変更判定部１０５が、フラグの変更指示をディレクトリ索引更新制御部１０６に出力するようにしてもよい。
【００５４】
また、マルチプロセッサシステム上において動作するプログラムがディレクトリ６１の使用状況を取得して、それに基づいてフラグを変更すべきエントリを判断し、そのエントリを示す情報をディレクトリ構成判定部のレジスタに設定し、このエントリに関するトランザクションの処理するタイミングにディレクトリ構成変更判定部１０５が、フラグの変更指示をディレクトリ索引更新制御部１０６に出力するようにしてもよい。
さらに、システム立ち上げ時には、ディレクトリの初期化処理、つまりALL０を書き込む処理が行われることが多いが、このときに、任意の値をフラグに書き込むようにしてもよい。
【００５５】
なお、本実施の形態においては、ハードマクロが２つの構成を説明したが、ハードマクロの数およびフラグ有効時の使用方法は、本実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
例えば、ハードウェアマクロを４つ備え、フラグ２０５のビット数を増やして、フラグの値が００の場合はウェイ方向に使用するハードマクロを４つ、フラグの値が０１の場合はセットアドレス方向に使用するハードマクロ２つ×ウェイ方向に使用するハードマクロ２つ、フラグの値が１０の場合はセットアドレス方向に使用するハードマクロ４つとする構成としてもよい。
【００５６】
また、例えば、ハードウェアマクロを４つ備え、同様にフラグ２０５のビット数を増やして、キーアドレスの最下位ビット値が０のハードマクロを３つ、キーアドレスの最下位ビット値が１のハードマクロに１つの使用方法にも変更できるようにしてもよい。
さらに、本実施の形態に例示したように、エントリ単位でのハードマクロの使用方法の変更をせず、フラグ２０５を有するウェイ単位での変更するようにしてもよい。
【００５７】
以上に説明したように、本実施の形態においては、ディレクトリのエントリ毎にフラグを備え、キャッシュメモリの使用状況に応じて、動的にかつ簡易的にキャッシュメモリの使用方法を変更することができるため、キャッシュメモリを有効に利用することができる。
また、キャッシュメモリの使用方法を変更するフラグをエントリ単位に備えることによって、エントリ単位でのウェイ数やセットアドレス数の変更を可能としている。
さらに、プロセッサからの直接の制御がなくても、ディレクトリのコヒーレンシ機能を保ちながらキャッシュメモリを有効利用することが可能である。
【符号の説明】
【００５８】
１１、１２    セル
２１、２２、２３、２４    プロセッサ
３１、３２、３３、３４    キャッシュメモリ
４１、４２、４３、４４、４５、４６、８１    接続手段
５１、５２    コヒーレンシ制御回路
６１、６２    ディレクトリ
１０１    トランザクション制御部
１０２    ディレクトリアクセス制御部
１０３    ＨＭ０
１０４    ＨＭ１
１０５    ディレクトリ構成変更判定部
１０６    ディレクトリ索引更新制御部
１０７    フラグ制御機能
【図１】
2010170292.tif 000003
【図２】
2010170292.tif 000004
【図３】
2010170292.tif 000005
【図４】
2010170292.tif 000006
【図５】
2010170292.tif 000007
【図６】
2010170292.tif 000008
【図７】
2010170292.tif 000009
【図８】
2010170292.tif 000010
【図９】
2010170292.tif 000011