説明

キャッシュメモリ制御回路およびキャッシュメモリ管理方法

【課題】キャッシュメモリを有効に利用することができるキャッシュメモリ制御回路およびキャッシュメモリ管理方法を提供すること
【解決手段】本発明にかかるキャッシュメモリ制御回路は、セットアソシアティブ方式によって、メインメモリ71に記憶されるデータをキャッシュメモリに記憶するキャッシュメモリ制御回路である。キャッシュメモリに記憶するデータのメインメモリ71上のアドレスを示すアドレス情報を含み、セットアドレスのそれぞれに対応するエントリと、メインメモリ上のアドレス値であって、セットアドレス以外の値のいずれかに応じて、エントリ内をさらに区分してアドレス情報を格納するか否かを示し、エントリのそれぞれに対応するフラグを格納するキャッシュ情報格納部を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はキャッシュメモリ制御回路およびキャッシュメモリ管理方法に関する。
【背景技術】
【0002】
共有メモリ型マルチプロセッサシステムには、キャッシュメモリを有する複数のプロセッサ間のコヒーレンシを保障するコヒーレンシ制御回路がある。コヒーレンシ制御回路は、プロセッサのキャッシュメモリの状態を格納するディレクトリやコピーキャッシュ等を有する。
また、共有メモリ型マルチプロセッサシステムにおいては、N(Nは正整数)ウェイセットアソシアティブ方式のディレクトリを搭載する場合がある。このディレクトリに、フルアソシアティブ方式を採用した場合は、キャッシュメモリのキャッシュラインに記憶するアドレスの制限がなくなる一方、必要なハードウェア量も増大してしまう。そのため、複数レベルのキャッシュメモリによるNウェイセットアソシアティブ方式が用いられることが多い。
【0003】
しかし、Nウェイセットアソシアティブ方式におけるウェイ数と、キャッシュラインに対応し、インデックスとなるアドレス(以下、「セットアドレス」とする)数は固定的であった。一方、システムやアプリケーションによって、キャッシュメモリを有効に利用することができるウェイ数やセットアドレス数が異なる場合がある。そのため、ウェイ数やセットアドレス数が固定されている場合、システムやアプリケーションによってはキャッシュメモリが有効に利用されないことがあった。つまり、システムやアプリケーショによって、セットアドレス数を多くしたい場合やウェイ数を多くしたい場合などがある。
また、共有メモリ型マルチプロセッサシステムは、複数のプロセッサから構成され、これらのプロセッサのそれぞれが実行するアプリケーションの処理が混在するため、アプリケーションの動作状態に応じて、ウェイ数やセットアドレス数を変更することができるディレクトリを備えることが望まれている。
【0004】
これらのことから、セットアソシアティブ方式のディレクトリにおいて、キャッシュメモリの使用状況に応じて、ハードウェアにおいて動的にかつ簡易的にキャッシュメモリの利用方法を変更することができれば、キャッシュメモリを有効に利用することができると考えられる。
なお、特許文献1、2、4、5には、セットアソシアティブ方式のキャッシュメモリ制御に関する技術が開示されている。
また、特許文献3には、キャッシュメモリのタグ部に対するセットアドレスを最適に設定する技術が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−020396号公報
【特許文献2】特開2005−293300号公報
【特許文献3】特開平04−096843号公報
【特許文献4】特開平05−040694号公報
【特許文献5】特開平05−241962号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
背景技術として説明したように、セットアソシアティブ方式においては、ウェイ数やセットアドレス数が固定されている場合は、キャッシュメモリが有効に利用されないという問題があった。
【0007】
本発明の目的は、上述した課題を解決するためになされたものであり、キャッシュメモリを有効に利用することができるキャッシュメモリ制御回路およびキャッシュメモリ管理方法を提供することにある。
【課題を解決するための手段】
【0008】
本発明にかかるキャッシュメモリ制御回路は、セットアソシアティブ方式によって、メインメモリに記憶されるデータをキャッシュメモリに記憶するキャッシュメモリ制御回路であって、前記キャッシュメモリに記憶するデータの前記メインメモリ上のアドレスを示すアドレス情報を含み、セットアドレスのそれぞれに対応するエントリと、前記メインメモリ上のアドレス値であって、前記セットアドレス以外の値のいずれかに応じて、エントリ内をさらに区分して前記アドレス情報を格納するか否かを示し、前記エントリのそれぞれに対応するフラグを格納するキャッシュ情報格納部を備えたものである。
【発明の効果】
【0009】
本発明により、キャッシュメモリを有効に利用することができるキャッシュメモリ制御回路およびキャッシュメモリ管理方法を提供することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施の形態にかかるマルチプロセッサシステムの全体構成を示すブロック図である。
【図2】本発明の実施の形態にかかるコヒーレンシ制御回路の内部構成を示すブロック図である。
【図3】本発明の実施の形態にかかるディレクトリ内容の概念図である。
【図4】本発明の実施の形態にかかるフラグとキーアドレス値の関係を示す図である。
【図5】本発明の実施の形態にかかるコヒーレンシ制御回路の動作を示すフローチャートである。
【図6】本発明の実施の形態にかかる異なるセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。
【図7】本発明の実施の形態にかかる同じセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。
【図8】本発明の実施の形態にかかるフラグ有効化を判定する処理を示すフローチャートである。
【図9】本発明の実施の形態にかかるフラグ無効化を判定する処理を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明の実施の形態にかかるマルチプロセッサシステムの全体構成を示すブロック図である。
マルチプロセッサシステムは、セル11、12を備える。
【0012】
セル11は、キャッシュメモリ31、32を有するプロセッサ21、22、メモリ71及びディレクトリ61を有するコヒーレンシ制御回路51を含む。また、プロセッサ21、22やメインメモリ71間は、相互に接続手段41、42、43によって接続される。
プロセッサ21、22は、メインメモリ71、72に記憶されるデータをキャッシュメモリ31、32に記憶して、そのデータに基づいて演算処理を実行する。
キャッシュメモリ31、32は、メインメモリ71、72のデータを記憶する。
コヒーレンシ制御回路51は、プロセッサ間のコヒーレンシを保証するための制御を行う。また、コヒーレンシ制御回路51は、セル12のコヒーレンシ制御回路52と接続手段81によって接続され、セル12のプロセッサ23、24及びメインメモリ72へのアクセスが可能である。接続手段41、42、43、81は、例えば、バスである。
ディレクトリ61は、セットアソシアティブ方式のディレクトリであり、キャッシングされるデータのメインメモリ71上におけるアドレスを示すアドレス情報をキャッシュラインに対応するセットアドレス毎に格納する。また、アドレス情報はセットアドレスのそれぞれに対応する単位を1エントリとし、ディレクトリ61にはセットアドレス数のエントリが格納される。なお、ディレクトリ61は、キャッシュ情報格納部に相当する。
メインメモリ71は、プロセッサ21、22、23、24によって共有可能なメモリである。
【0013】
セル12は、キャッシュメモリ33、34を有するプロセッサ23、24、メモリ72及びディレクトリ62を有するコヒーレンシ制御回路52を含む。
なお、セル12の構成要素は、セル11と同様であるため、説明を省略する。
ここで、ディレクトリ61、62は、セットアソシアティブ方式のディレクトリであるため、新たにキャッシュメモリにデータを記憶する場合にディレクトリ61、62に空きがない場合はスワップを行う必要がある。
本実施の形態におけるスワップとは、セットアソシアティブ方式を採用するディレクトリにおいて生じる処理である。詳しくは、新たにキャッシュメモリに記憶するデータのアドレス情報を、ディレクトリに対して格納する必要が生じたときに、これを格納する領域がディレクトリに存在しない場合は、ディレクトリに既に格納されているアドレス情報のいずれかを排除し、新たなアドレス情報を格納するための空き領域を生成する。この既に格納されている情報を排除する処理がスワップである。このとき、ディレクトリからスワップしたアドレス情報に対応し、キャッシュメモリに記憶されているデータについても、コヒーレンシを保つために無効化を行う。
【0014】
図2は、本発明の実施の形態にかかるコヒーレンシ制御回路の内部構成を示すブロック図である。ここでは、セル11のコヒーレンシ制御回路51について説明する。なお、セル12のコヒーレンシ制御回路52の構成要素は、コヒーレンシ制御回路51と同様であるため説明を省略する。
コヒーレンシ制御回路51は、ディレクトリ61、トランザクション制御部101、ディレクトリアクセス制御部102、ディレクトリ構成変更判定部105及びフラグ制御機能107を有するディレクトリ索引更新制御部106を備える。
ディレクトリ61は、HM0(103)及びHM1(104)の2つのハードマクロを含む。ハードマクロは、セットアドレス数のエントリから構成され、1つのハードマクロには2ウェイのアドレス情報が入る。2つのハードマクロを含むディレクトリ61は、合計4ウェイのアドレス情報を格納する。
【0015】
トランザクション制御部101は、プロセッサ21、22、セル12及びメインメモリ72とのトランザクションの送受信を行う。
ここで、トランザクションは、例えば、プロセッサ21がメインメモリ71の任意のアドレスに記憶されているデータにアクセスする場合、このアドレスを指定してトランザクション制御部101に対して出力される。これに応じて、トランザクション制御部101は、後に詳述するコヒーレンシ制御回路51の処理の結果に基づいて、任意のアドレスに記憶されているデータをメインメモリ71もしくはキャッシュメモリ31、32、33、34のいずれから取得したらよいかを答えるトランザクションをプロセッサ21に出力する。
なお、トランザクション制御101は、ディレクトリ61に関するトランザクション、つまり、メインメモリ71のアクセスに関するトランザクションを受信した場合に、このトランザクションをディレクトリアクセス制御部102に出力する。
【0016】
その他に、トランザクション制御101は、ディレクトリ索引更新制御部106からスワップ発行指示を受けると、スワップ発行指示が示すアドレスのキャッシュ無効化トランザクションを生成してプロセッサ21、22やセル12を介してプロセッサ23,24に出力する。キャッシュ無効化トランザクションの出力を受けたプロセッサは、キャッシュメモリに記憶され、キャッシュ無効化トランザクションが示すアドレスのデータを無効化する。
【0017】
ディレクトリアクセス制御部102は、トランザクション制御部101から受信したトランザクションに含まれるアドレスがディレクトリ61に管理されているかどうかを調べるために、このアドレスに対応するエントリを読み出すための読み出し指示をHM0(103)及びHM1(104)に出力する。また、ディレクトリアクセス制御部102は、ディレクトリ索引更新制御部106からディレクトリ更新指示を受けた場合、ディレクトリ61に書き込みを行う等のディレクトリ61を管理する制御を行う。
HM0(103)及びHM1(104)は、ハードマクロであり、ディレクトリアクセス制御部102から、読み出し指示の出力を受けた場合、エントリの読み出しデータをディレクトリ索引更新制御部106に出力する。
【0018】
ディレクトリ構成変更判定部105は、ディレクトリアクセス制御部102における競合情報やディレクトリ索引更新制御部106のエントリの読み出しデータ等に基づいて、ハードマクロの使用方法を変更するかどうかの判定を行う。その判断の結果に応じて、ディレクトリ構成変更判定部105は、ディレクトリ索引更新制御部106に変更指示を出力する。なお、競合情報については、後に詳述する。
【0019】
ディレクトリ索引更新制御部106は、HM0(103)及びHM1(104)から出力されたエントリの読み出しデータに基づいて、トランザクション制御部101が受けたトランザクションに含まれるアドレスの索引結果をトランザクション制御部101に出力する。また、ディレクトリ索引更新制御部106は、ディレクトリ61に書き込むディレクトリ更新データを生成して、ディレクトリアクセス制御部102にディレクトリ更新データと共にディレクトリ更新指示を出力する。
【0020】
その他に、ディレクトリ索引更新制御部106は、ディレクトリ61に空きがなく、スワップが必要な場合、スワップするアドレス情報に対応するデータのキャッシュ無効化トランザクションをプロセッサ21、22、23,24に出力するように指示するスワップ発行指示をトランザクション制御部101に出力する。また、ディレクトリ索引更新制御部106は、エントリの読み出しデータをディレクトリ構成変更判定部105に出力する。
【0021】
フラグ制御機能107は、ディレクトリ構成変更判定部105からの変更指示やエントリの読み出しデータに含まれるフラグの状態に基づいて、スワップするアドレス情報の選択や、ディレクトリ61に新たなアドレス情報を登録するウェイの選択の方法を変更する制御を行う。
詳しくは、ディレクトリ61に新たなアドレス情報を登録するときに、フラグが無効を示している、言い換えると、全てのハードマクロをウェイ方向に使用することを示している。この場合、1エントリに含まれるHM0(103)及びHM1(104)の全4ウェイの中から4ウェイセットアソシアティブ方式により、LRU法等に従って、アドレス情報を登録するウェイを選択する。
フラグが有効を示している、言い換えると、全てのハードマクロをセットアドレス方向に使用することを示している。この場合、1エントリに含まれるHM0(103)及びHM1(104)のそれぞれを別々の2ウェイとして扱い、どちらかの2ウェイの中から2ウェイセットアソシアティブ方式により、LRU法等に従って、アドレス情報を登録するウェイを選択する。なお、フラグが有効な場合、HM0(103)及びHM1(104)は、セットアドレスに1bitの拡張セットアドレスを加えたアドレスをセットアドレスとみなして使用する。フラグについては、後に詳述するが、エントリ毎にその値を判断することができる。
【0022】
図3は、本発明の実施の形態にかかるディレクトリ内容の概念図である。ディレクトリ61、62はメインメモリ71、72のキャッシュラインに対応するアドレス情報を1エントリとして、セットアドレス数のエントリを格納する。図3は、ディレクトリ61の1エントリあたりのHM0(103)のウェイ0をディレクトリ206として説明するものである。つまり、ディレクトリ206は、ディレクトリ61の1エントリのうちの1ウェイ当たりの構成を示す。なお、その他のエントリ、ハードマクロ及びウェイにおけるディレクトリ206についても構成は同様であるため説明を省略する。ディレクトリ206は、アドレス情報に相当する。
【0023】
ディレクトリ206は、キーアドレス201、ステータス情報203、エージェント情報204及びフラグ205を含む。
セットアドレス202は、キャッシュメモリ31、32、33、34に記憶されるデータのメインメモリ71上におけるアドレスのうちの所定のビット部分の値を格納する。ディレクトリ61のエントリのインデックスとして用いられる。セットアドレス202に基づいて、トランザクションに含まれるアドレスに対応するエントリを特定することで、ディレクトリ206の索引や更新を行うことができる。
【0024】
キーアドレス201は、キャッシュメモリ31、32、33、34に記憶されるデータのメインメモリ71上におけるアドレスからセットアドレス202を除いたビット部分の値を格納する。
本実施の形態においては、アドレスの最上位bit番号をm、キーアドレスの最下位bit番号をkとすると、アドレスはm:0、キーアドレスはm:k、セットアドレスはk−1:0となる。
ステータス情報203は、ディレクトリ206のキーアドレス201及びセットアドレス202から構成されるアドレスが示すデータのキャッシング状態を示す。ステータス情報206は、データがキャッシュメモリに記憶されているかどうかを示す値を格納する。
エージェント情報204は、アドレスが示すデータをキャッシングしているキャッシュメモリを有するプロセッサの位置を示す情報である。
【0025】
フラグ205は、ディレクトリ206が含まれるエントリにおけるハードマクロをウェイ方向もしくはセットアドレス方向のどちらで使用するかを示す。本実施の形態においては、エントリ内のいずれかのウェイのフラグが有効である場合に、フラグが有効であると判断し、そのエントリにおけるハードマクロの使用方法を変更する。
図4は、本発明の実施の形態にかかるフラグとキーアドレス値の関係を示す図である。
エントリ内の全てのフラグの値が0であり無効を示している場合、このエントリのHM0(103)及びHM1(104)を4ウェイのディレクトリ構成として使用する。
エントリ内のいずれかのフラグ205の値が1であり有効を示している場合、このエントリのHM0(103)はキーアドレス201の最下位アドレスbit kが0、HM1(104)はキーアドレス201の最下位アドレスbit kが1として、それぞれを2ウェイの構成として使用する。つまり、セットアドレスに加えて、最下位アドレスbit kの値に応じて、エントリを区分してアドレス情報を格納するようにする。
なお、本実施の形態におけるエントリとは、フラグの値に関係なく、ディレクトリ61におけるセットアドレス202の値が同じ4ウェイ分のデータを示す。また、フラグ205は、ウェイ単位でなく、エントリ単位で用意してもよい。
【0026】
本発明の実施の形態にかかるコヒーレンシ制御回路の動作を示すフローチャートである。図5は、本発明の実施の形態にかかるコヒーレンシ制御回路の動作を示すフローチャートである。
まず、コヒーレンシ制御回路51のトランザクション制御部101は、プロセッサ2122やセル12からトランザクションの出力を受けた場合に、ディレクトリ61へのアクセスが必要なときは、このトランザクションをディレクトリアクセス制御部102に出力する。なお、ディレクトリ61へのアクセスが必要でないときは、トランザクションがメインメモリ72へのアクセスが示しているときとなる。この場合は、コヒーレンシ制御回路51は、コヒーレンシ制御回路52にトランザクションを転送する。
【0027】
ディレクトリアクセス制御部102は、トランザクション制御部101からトランザクションの出力を受けると、トランザクションアドレスに含まれるアドレスのセットアドレスに対応するエントリを読み出すために、このセットアドレスを指定して読み出し指示をHM0(103)及びHM1(104)に出力する。また、ディレクトリアクセス制御部102は、トランザクションをディレクトリ索引更新制御部106に出力する。
HM0(103)及びHM1(104)は、ディレクトリアクセス制御部102から読み出し指示の出力を受けると、指定されたセットアドレスに対応するエントリの読み出しデータをディレクトリ索引更新制御部106に出力する。
【0028】
フラグ制御機能107は、HM0(103)とHM1(104)から出力されたエントリの読み出しデータに格納されたキーアドレス201とトランザクションに含まれるアドレスのキーアドレスが一致しているものを探す。
一致したものがなかった場合、ディレクトリ索引更新制御部106は、その旨をトランザクション制御部101に出力する。
この場合は、キャッシュメモリ31、32、33、34にトランザクションに含まれるアドレスのデータが記憶されてないことを示す。よって、トランザクション制御部101は、トランザクションの出力元に対して、メインメモリ71からデータを取得する旨のトランザクションを出力する。
【0029】
一致したものがあった場合、ディレクトリ索引更新制御部106は、一致したウェイに含まれるステータス情報203やエージェント情報204をトランザクション制御部101に出力する。
この場合は、キャッシュメモリ31、32、33、34にトランザクションに含まれるアドレスのデータが記憶されていることを示す。
ここで、トランザクション制御部101は、ステータス情報203には、キャッシュメモリ31、32、33、34にキャッシングされたデータとメインメモリ71のデータの内容が一致しているかどうかを示す情報も格納することができる。これにより、ステータス情報203が一致を示している場合はメインメモリ71からデータを取得する旨を、ステータス情報203が一致を示していない場合はエージェント情報204が示すプロセッサのキャッシュメモリからデータを取得する旨のトランザクションを出力する。
まず、トランザクションの出力を受けると、上述したような索引制御が行われる(S301)。
【0030】
また、フラグ制御機能107は、エントリの読み出しデータのフラグ205を確認する(S302)。
フラグ205の値が0であり無効の場合、ディレクトリ索引更新制御部106は、ディレクトリ構成変更判定部105からのフラグ有効化指示を確認する(S304)。
フラグ有効化指示がなかった場合、ディレクトリ索引更新制御部106は、ディレクトリ61のHM0(103)とHM1(104)を同じセットアドレス制御とした4ウェイのディレクトリ更新制御を行う(S307)。そして、ディレクトリ索引更新制御部106は、ディレクトリ61に書き込むディレクトリ更新データを生成して、ディレクトリアクセス制御部102に、ディレクトリ更新データとディレクトリ更新指示を出力する。ディレクトリ更新指示の出力を受けたディレクトリアクセス制御部102は、ディレクトリ61にディレクトリ更新データを書き込む(S309)。ステップS309の処理により、例えば、新たにキャッシュメモリに記憶するデータのアドレス情報が登録される。
【0031】
フラグ205の値が0であり無効の場合に、フラグ有効化指示があったとき(S306)、ディレクトリ索引更新制御部106は、HM0(103)とHM1(104)を異なるセットアドレスとした2ウェイのディレクトリ更新制御を行う(S308)。そして、ディレクトリ索引更新制御部106は、フラグを有効にするディレクトリ更新データを生成して、ディレクトリアクセス制御部102に、ディレクトリ更新データとディレクトリ更新指示を出力する。ディレクトリ更新指示の出力を受けたディレクトリアクセス制御部102は、ディレクトリ61にディレクトリ更新データを書き込む(S309)。
なお、ステップS307、S308におけるにディレクトリ更新制御の動作については、後に詳述する。
【0032】
一方、フラグ205の値が1であり有効の場合、ディレクトリ索引更新制御部106は、ディレクトリ構成変更判定部105からのフラグ無効化指示を確認する(S303)。
フラグ無効化指示がなかった場合、ディレクトリ索引更新制御部106は、フラグ205は有効のままとして(S306)、HM0(103)とHM1(104)を異なるセットアドレスとしたディレクトリ更新制御を行う(S308)。そして、上述と同様に、ディレクトリ更新をする(S309)。
【0033】
フラグ205の値が1であり有効な場合に、フラグ無効化指示があったとき(S305)、ディレクトリ索引更新制御部106は、HM0(103)とHM1(104)を同じセットアドレス制御としたディレクトリ更新制御を行う(S307)。そして、ディレクトリ索引更新制御部106は、フラグを無効にするディレクトリ更新データを生成して、ディレクトリアクセス制御部102に、ディレクトリ更新データとディレクトリ更新指示を出力する。そして、上述と同様に、ディレクトリ更新をする(S309)。
【0034】
図6は、本発明の実施の形態にかかる異なるセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。図5におけるステップS308の処理について示したものである。ここでは、例として、キーアドレス201の最下位bit kの値が0であるアドレスのトランザクションを処理する場合について説明する。
【0035】
まず、フラグ制御機能107は、エントリの読み出しデータにトランザクションのキーアドレス201と一致するキーアドレスを格納するウェイがあるかを確認する(S401)。
一致するウェイがあった場合、フラグ制御機能107は、トランザクションに含まれるアドレスのキーアドレス201の最下位bit kの値が0であるため、bit kの値が0として扱われるHM0(103)に一致したウェイがあるかどうかを確認する(S402)。
【0036】
HM0(103)に一致するウェイがあった場合、フラグ制御機能107は、そのウェイを選択する(S403)。
そして、ディレクトリ索引更新制御部106は、そのウェイを更新するためのディレクトリ更新データを生成して(S411)、ディレクトリ61の更新を行う。
ここで、一致するウェイがあった場合であっても、そのウェイのエージェント情報204が示すプロセッサと異なるプロセッサからのトランザクションであったときは、エージェント情報204の更新が必要となるため、ウェイの更新を行っている。なお、ウェイの内容に変更が全くない場合には、ステップS411を行わないようにしてもよい。後に詳述する図7のステップS507についても同様である。
【0037】
一方、一致するウェイがあった場合であっても、bit kの値が1として扱われるHM1(104)に一致したウェイがあったときは、ディレクトリ61を更新する際には一致したHM1(104)のウェイを無効化して、HM0(103)に移動させる必要がある。その場合、ディレクトリ索引更新制御部106は、HM1(104)のアドレス一致したウェイを無効化するためのディレクトリ書き込みデータの作成(S410)と、HM0(103)を更新するディレクトリ書き込みデータの作成を並行して行う。
ここで、このHM0(103)を更新するディレクトリ書き込みデータの作成は、ディレクトリ61に一致するアドレスがなかった場合と同様のステップS404以降の処理によって行う。
【0038】
一致するウェイがなかった場合、フラグ制御機能107は、更新対象となるHM0(103)に、使用されていないウェイがあるかどうかを調べる(S404)。
使用されていないウェイがある場合、フラグ制御機能107は、空きウェイを選択する(S405)。
そして、ディレクトリ索引更新制御部106は、そのウェイに対するディレクトリ書き込みデータを作成して(S411)、ディレクトリ61の更新を行う。
使用されていないウェイがない場合、フラグ制御機能107は、更新対象となるHM0(103)に、HM1(104)に格納されるべきウェイ、つまりbit kの値が1であるウェイがあるかどうかを調べる(S406)。
【0039】
bit kの値が1であるウェイがある場合、フラグ制御機能107は、そのウェイを選択する(S408)。
bit kの値が1であるウェイがなかった場合、フラグ制御機能107は、HM0(103)からLRU法等により書き込むウェイを選択する(S407)。また、ディレクトリ索引更新制御部106は、ステップS407もしくはS408において選択したウェイに格納されたアドレスのキャッシュを無効化するために、そのアドレスを含んだスワップ発行指示をトランザクション制御部101に出力する(S409)。そして、選択したウェイを更新するためのディレクトリ更新データを生成して(S411)、ディレクトリ61の更新を行う。
【0040】
このとき、ステップS410の制御を並行して実施していた場合は、無効化するHM1(104)のウェイの更新も同時に行う。ここで、ステップS408、S410の処理は、フラグ205が有効化されたあと、HM0(103)にbit kの値が1のウェイがある又はHM1(104)にbit kの値が0のウェイがあり、HM0(103)及びHM1(104)に格納されるデータの振り分けが完全になされるまでの間の過渡期に発生することとなる。
【0041】
図7は、本発明の実施の形態にかかる同じセットアドレス制御とした場合のディレクトリ更新制御を示すフローチャートである。図5におけるステップS307の処理について示したものである。
まず、フラグ制御機能107は、エントリの読み出しデータにトランザクションのキーアドレスと一致するキーアドレス201を格納するウェイがあるかを確認する(S501)。
一致するウェイがあった場合、フラグ制御機能107は、そのウェイを選択する(S502)。
そして、ディレクトリ索引更新制御部106は、そのウェイを更新するためのディレクトリ更新データを生成して(S507)、ディレクトリ61の更新を行う。
【0042】
一致するウェイがなかった場合、フラグ制御機能107は、エントリの読み出しデータに使用されていないウェイがあるかどうかを調べる(S503)。
使用されていないウェイがある場合、フラグ制御機能107は、空きウェイを選択する(S504)。
そして、ディレクトリ索引更新制御部106は、そのウェイに対するディレクトリ書き込みデータを作成して(S507)、ディレクトリ61の更新を行う。
【0043】
使用されていないウェイがない場合、フラグ制御機能107は、エントリの読み出しデータからLRU法等により書き込むウェイを選択する(S505)。
そして、ディレクトリ索引更新制御部106は、選択したウェイに格納されたアドレスのキャッシュを無効化するために、そのアドレスを含んだスワップ発行指示をトランザクション制御部101に出力する(S506)。そして、選択したウェイを更新するためのディレクトリ更新データを生成して(S507)、ディレクトリ61の更新を行う。
【0044】
図8は、本発明の実施の形態にかかるフラグ有効化を判定する処理を示すフローチャートである。
まず、ディレクトリアクセス制御部102において、トランザクションの競合があった場合、その競合したトランザクションのそれぞれに含まれるアドレスのキーアドレスの最下位bit kの値が異なるかどうかを判定する(S601)。
ここで、本実施の形態における競合とは、あるトランザクションに対する処理の実行中に、そのトランザクションとセットアドレスが同じトランザクションをディレクトリアクセス制御部102が受けることをいう。なお、この場合は、ディレクトリアクセス制御部102において、先のトランザクションの処理が完了するまで、後続のトランザクションをキューイングする等して、処理を実行しないようにする。
【0045】
bit kの値が同じ場合、ディレクトリ構成変更判定部105は、処理を終了する。
bit kの値が異なる場合、ディレクトリ構成変更判定部105は、ディレクトリ索引更新制御部106から出力されたエントリの読み出しデータにキーアドレスの最下位bit kの値が0と1のウェイが混在しているかどうかを判断する(S602)。
値が混在していない場合、ディレクトリ構成変更判定部105は、処理を終了する。
値が混在している場合、ディレクトリ構成変更判定部105は、ディレクトリアクセス制御部102から出力されたトランザクション及びエントリの読み出しデータに基づいて、スワップが必要かどうかを判断する(S603)。
【0046】
スワップが必要な場合、ディレクトリ61をセットアドレス方向に拡大した使用方法とした方がスワップの発生などの干渉が発生する可能性が低くなると判断し、ディレクトリ構成変更判定部105は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを有効化する変更指示をディレクトリ索引更新制御部106に出力する(S606)。
スワップが必要でない場合、ディレクトリ構成変更判定部105は、ディレクトリ構成変更判定部105が有するレジスタに、現在処理中のエントリを示す情報及び発生回数などを含む競合情報を格納する(S604)。このように発生回数は、エントリに関連付けて、エントリ毎にカウントする。
【0047】
次に、ディレクトリ構成変更判定部105は、レジスタに格納した競合の発生回数が予め定めた規定回数に達したかどうかを判断する(S605)。
規定回数に達した場合、ディレクトリ構成変更判定部105は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを有効化する変更指示をディレクトリ索引更新制御部106に出力する(S606)。
規定回数に達していない場合、ディレクトリ構成変更判定部105は、処理を終了する。
なお、競合情報は、フラグを有効化する変更指示を出力したときや、一定期間内にレジスタが示すエントリに対するアクセス、つまりディレクトリアクセス制御部102による読み出しや更新がなかったときは無効にする。
【0048】
図9は、本発明の実施の形態にかかるフラグ無効化を判定する処理を示すフローチャートである。
まず、ディレクトリアクセス制御部102において、トランザクションの競合があった場合、その競合したトランザクションのそれぞれに含まれるアドレスのキーアドレスの最下位bit kの値が異なるかどうかを判定する(S701)。
bit kの値が異なる場合、ディレクトリ構成変更判定部105は、処理を終了する。
bit kの値が同じ場合、ディレクトリ構成変更判定部105は、ディレクトリ索引更新制御部106から出力されたエントリの読み出しデータに、フラグ205が有効であるウェイがあるかどうかを判断する(S702)。
【0049】
フラグ205が無効を示す場合、ディレクトリ構成変更判定部105は、処理を終了する。
フラグ205が有効を示す場合、ディレクトリ構成変更判定部105は、ディレクトリアクセス制御部102から出力されたトランザクション及びエントリの読み出しデータに基づいて、スワップが必要かどうかを判断する(S703)。
スワップが必要でない場合、ディレクトリ構成変更判定部105は、処理を終了する。
スワップが必要な場合、ディレクトリ構成変更判定部105は、エントリの読み出しデータに基づいて、現在処理中のトランザクションのキーアドレス201の最下位bit kと異なる値を格納対象としているハードマクロのウェイが使用されているかどうかを確認する(S704)。
【0050】
使用されているウェイがない場合、ディレクトリ構成変更判定部105は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを無効化する変更指示をディレクトリ索引更新制御部106に出力する(S707)。
使用されているウェイがある場合、ディレクトリ構成変更判定部105は、現在処理中のトランザクションのキーアドレス201の最下位bit kが異なる値を格納対象としているハードマクロ側に対するアクセス、つまりディレクトリアクセス制御部102による更新が、予め定めた期間内に予め定めた規定回数あったかどうかを判断する(S705)。
【0051】
なお、アクセス回数は、次のステップS706において競合情報をディレクトリ構成変更判定部105のレジスタに格納した以降に、ディレクトリ構成変更判定部105がアクセス回数をレジスタに格納することで判断可能とする。つまり、次のステップS706において競合情報を格納し、次にステップS705の処理を行ったときに、競合情報が格納されている場合に、レジスタに格納されているアクセス回数が有効と判断してステップS705の判断を行う。
【0052】
アクセス回数が規定回数あった場合、ディレクトリ構成変更判定部105は、現在処理中のトランザクションのアドレスによって特定されるエントリもしくはウェイのフラグを無効化する変更指示をディレクトリ索引更新制御部106に出力する(S707)。
アクセス回数が規定回数なかった場合、ディレクトリ構成変更判定部105は、現在処理中のエントリを示す情報などを含む競合情報をディレクトリ構成変更判定部105のレジスタに格納する(S706)。なお、アクセス回数は、この競合情報のエントリに関連付けて、エントリ毎にカウントする。
また、競合情報は、フラグ無効化指示を出力したときや、一定期間内にレジスタが示すエントリに対するアクセス、つまりディレクトリアクセス制御部102による読み出しや更新がなかったときは無効にする。
【0053】
以上にフラグを変更するかどうかの判定方法の一例を説明したが、ディレクトリ61の使用状況を出力装置にモニタリングして、それに基づいてユーザがフラグを変更したいエントリを示す情報を入力装置から入力して、ディレクトリ構成判定部のレジスタに設定し、このエントリに関するトランザクションの処理するタイミングにディレクトリ構成変更判定部105が、フラグの変更指示をディレクトリ索引更新制御部106に出力するようにしてもよい。
【0054】
また、マルチプロセッサシステム上において動作するプログラムがディレクトリ61の使用状況を取得して、それに基づいてフラグを変更すべきエントリを判断し、そのエントリを示す情報をディレクトリ構成判定部のレジスタに設定し、このエントリに関するトランザクションの処理するタイミングにディレクトリ構成変更判定部105が、フラグの変更指示をディレクトリ索引更新制御部106に出力するようにしてもよい。
さらに、システム立ち上げ時には、ディレクトリの初期化処理、つまりALL0を書き込む処理が行われることが多いが、このときに、任意の値をフラグに書き込むようにしてもよい。
【0055】
なお、本実施の形態においては、ハードマクロが2つの構成を説明したが、ハードマクロの数およびフラグ有効時の使用方法は、本実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
例えば、ハードウェアマクロを4つ備え、フラグ205のビット数を増やして、フラグの値が00の場合はウェイ方向に使用するハードマクロを4つ、フラグの値が01の場合はセットアドレス方向に使用するハードマクロ2つ×ウェイ方向に使用するハードマクロ2つ、フラグの値が10の場合はセットアドレス方向に使用するハードマクロ4つとする構成としてもよい。
【0056】
また、例えば、ハードウェアマクロを4つ備え、同様にフラグ205のビット数を増やして、キーアドレスの最下位ビット値が0のハードマクロを3つ、キーアドレスの最下位ビット値が1のハードマクロに1つの使用方法にも変更できるようにしてもよい。
さらに、本実施の形態に例示したように、エントリ単位でのハードマクロの使用方法の変更をせず、フラグ205を有するウェイ単位での変更するようにしてもよい。
【0057】
以上に説明したように、本実施の形態においては、ディレクトリのエントリ毎にフラグを備え、キャッシュメモリの使用状況に応じて、動的にかつ簡易的にキャッシュメモリの使用方法を変更することができるため、キャッシュメモリを有効に利用することができる。
また、キャッシュメモリの使用方法を変更するフラグをエントリ単位に備えることによって、エントリ単位でのウェイ数やセットアドレス数の変更を可能としている。
さらに、プロセッサからの直接の制御がなくても、ディレクトリのコヒーレンシ機能を保ちながらキャッシュメモリを有効利用することが可能である。
【符号の説明】
【0058】
11、12 セル
21、22、23、24 プロセッサ
31、32、33、34 キャッシュメモリ
41、42、43、44、45、46、81 接続手段
51、52 コヒーレンシ制御回路
61、62 ディレクトリ
101 トランザクション制御部
102 ディレクトリアクセス制御部
103 HM0
104 HM1
105 ディレクトリ構成変更判定部
106 ディレクトリ索引更新制御部
107 フラグ制御機能

【特許請求の範囲】
【請求項1】
セットアソシアティブ方式によって、メインメモリに記憶されるデータをキャッシュメモリに記憶するキャッシュメモリ制御回路であって、
前記キャッシュメモリに記憶するデータの前記メインメモリ上のアドレスを示すアドレス情報を含み、セットアドレスのそれぞれに対応するエントリと、
前記メインメモリ上のアドレス値であって、前記セットアドレス以外の値のいずれかに応じて、エントリ内をさらに区分して前記アドレス情報を格納するか否かを示し、前記エントリのそれぞれに対応するフラグを格納するキャッシュ情報格納部を備えたキャッシュメモリ制御回路。
【請求項2】
前記キャッシュメモリ制御回路は、前記エントリに含まれるアドレス情報の値に応じて、当該エントリに対応するフラグを変更する構成判定部をさらに備えた請求項1に記載のキャッシュメモリ制御回路。
【請求項3】
前記構成判定部は、前記エントリに含まれるアドレス情報のスワップが発生する場合に、前記フラグを変更する請求項2に記載のキャッシュメモリ制御回路。
【請求項4】
前記エントリは、前記フラグが有効である場合、前記セットアドレス以外の値のうちの所定ビットがとり得る値のそれぞれに対応するように区分され、当該区分には対応付けられた前記所定ビット値と前記所定ビット値が一致する前記アドレス情報を格納する請求項3に記載のキャッシュメモリ制御回路。
【請求項5】
前記構成判定部は、前記フラグが無効であり、前記エントリに前記所定ビット値が異なるアドレス情報が混在している場合に、前記フラグを有効とする請求項4に記載のキャッシュメモリ制御回路。
【請求項6】
前記構成判定部は、前記フラグが有効であり、前記スワップによって新たに格納する前記アドレス情報の前記所定ビット値と異なる値に対応する区分に前記アドレス情報が格納されていない場合に、前記フラグを無効とする請求項4又は5に記載のキャッシュメモリ制御回路。
【請求項7】
前記エントリは、N(Nは正整数)ウェイのアドレス情報が含まれ、前記フラグが有効である場合、それぞれがN/M(Mは、前記所定ビットが取り得る値の数)ウェイに区分される請求項4乃至6のいずれかに記載のキャッシュメモリ制御回路。
【請求項8】
前記キャッシュメモリ制御回路は、コヒーレンシを保障するために使用されるディレクトリをさらに備え、
前記ディレクトリは、前記キャッシュ情報格納部を有する請求項1乃至7のいずれかに記載のキャッシュメモリ制御回路。
【請求項9】
セットアソシアティブ方式により、キャッシュメモリに記憶するデータのアドレスを管理するアドレス管理方法であって、
前記アドレス値であって、セットアドレス以外の値のいずれかに応じて、さらにエントリを区分して格納するか否かを示すフラグをエントリ毎に設定するステップと、
前記フラグに応じて、前記アドレスを管理するステップとを備えたアドレス管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate