(57)【要約】【課題】キャッシュの階層を追って段階的にスヌープを行うときの処理時間を短縮することのできるキャッシュスヌープ制御装置およびキャッシュスヌープ処理方法を提供する。【解決手段】キャッシュスヌープ制御装置１は、有効ビット生成部１１が、それぞれの階層のキャッシュメモリの各インデックスの各ウェイに対応して、そのウェイに有効なデータが存在しているかどうかを示す有効ビットを生成し、排他ビット生成部１２が、ｎ次から２次までの階層のキャッシュメモリの各インデックスの各ウェイが、その階層よりも下位階層のキャッシュメモリに対して排他的な内容を保持しているかどうかを示す排他ビットを生成し、スヌープ実行制御部１３が、有効ビットアレイ１４に格納された有効ビットの情報および排他ビットアレイ１５に格納された排他ビットの情報にもとづいて、各階層のキャッシュメモリのスヌープ動作の実行を制御する。【選択図】図１
2008146237.tif 000002
【特許請求の範囲】
【請求項１】
ｎ次の階層を有するキャッシュメモリに対して、ｎ次キャッシュメモリから階層を追って段階的にスヌープを行うスヌープ処理を制御するキャッシュスヌープ制御装置であって、
それぞれの階層のキャッシュメモリの各インデックスの各ウェイに対応して、そのウェイに有効なデータが存在しているかどうかを示す有効ビットを生成する有効ビット生成手段と、
ｎ次から２次までの階層のキャッシュメモリの各インデックスの各ウェイが、その階層よりも下位階層のキャッシュメモリに対して排他的な内容を保持しているかどうかを示す排他ビットを生成する排他ビット生成手段と、
前記有効ビットおよび前記排他ビットの情報にもとづいて、各階層のキャッシュメモリのスヌープ動作の実行を制御するスヌープ実行制御手段と、
を有することを特徴とするキャッシュスヌープ制御装置。
【請求項２】
前記スヌープ実行制御手段は、
スヌープ要求を受けたときに、スヌープ対象アドレスにもとづいて前記有効ビットを読み出すべきインデックスを決定し、前記インデックスのウェイの中で前記有効ビットが有効を示すウェイを、前記各階層のキャッシュメモリからタグを読み出す、タグ読み出しウェイと決定する
ことを特徴とする請求項１に記載のキャッシュスヌープ制御装置。
【請求項３】
前記スヌープ実行制御手段は、
上位階層のキャッシュメモリの前記タグ読み出しウェイがスヌープヒットしたときは、そのウェイに対する排他ビットを検査し、前記排他ビットが排他を示すときは、その階層より下のキャッシュへのスヌープ動作を抑止する
ことを特徴とする請求項２に記載のキャッシュスヌープ制御装置。
【請求項４】
ｎ次の階層を有するキャッシュメモリに対して、ｎ次キャッシュメモリから階層を追って段階的にスヌープを行うスヌープ処理方法であって、
スヌープ対象アドレスに一致するアドレスのウェイが有効なデータを有していることを検出したときは、そのウェイの前記データが、そのウェイを有するキャッシュメモリの階層よりも下位の階層に位置するキャッシュメモリに対して排他的であるかどうかを検査し、排他的であると判明したときは、その時点でスヌープ動作を終了させる
ことを特徴とするキャッシュスヌープ処理方法。
【請求項５】
ｎ次の階層を有するキャッシュメモリに対して、ｎ次キャッシュメモリから階層を追って段階的にスヌープを行うスヌープ処理方法であって、
スヌープ要求を受けたときに、スヌープ対象アドレスにもとづいて読み出すべきインデックスを決定するステップと、
前記ｎ次の階層を有するキャッシュメモリそれぞれの前記インデックスのウェイの中に有効ウェイがあるかどうかを判定するステップと、
前記インデックスのウェイの中に有効ウェイがあると判定されたときは、その中で最も上位階層のキャッシュメモリのウェイを選出するステップと、
前記選出されたウェイのタグが示すアドレスが前記スヌープ対象アドレスと一致しているかどうかを判定するステップと、
前記選出されたウェイのタグが示すアドレスが前記スヌープ対象アドレスと一致していると判定されたときは、前記選出されたウェイの内容が、そのウェイを有するキャッシュメモリの階層よりも下位の階層に位置するキャッシュメモリに対して排他的であるかどうかを判定するステップと、
を有し、
前記選出されたウェイの内容が下位の階層に位置するキャッシュメモリに対して排他的であると判定されたときは、スヌープ動作を終了させる
ことを特徴とするキャッシュスヌープ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュスヌープ制御装置およびキャッシュスヌープ処理方法に関する。
【背景技術】
【０００２】
マルチレベルキャッシュなど複数のキャッシュメモリを備えるコンピュータシステムでは、それぞれのキャッシュメモリがデータの更新を行った場合でも、プロセサが最新の正しいデータにアクセスできるよう、キャッシュコヒーレンシを保つ必要がある。そのために、キャッシュスヌープを行い、各キャッシュメモリに格納されているデータの確認を行う。
【０００３】
スヌープ要求があった場合、各キャッシュメモリへは確認対象のアドレスデータが送られ、それに対して、該当のアドレスのデータを有する場合、それぞれのキャッシュメモリは、そのデータの無効化操作かキャッシュ内容の書き出しなどのスヌープ処理を行う。
【０００４】
このキャッシュスヌープをｎ次の階層を有するマルチレベルキャッシュで行う場合、幾通りかのスヌープ方法が考えられる。
【０００５】
その１つが、全階層のキャッシュの内容を同時にスヌープする方法である。この方法では短時間でスヌープ処理を行うことができるが、並列処理を行うため消費電力が増えるという問題がある。これに対して、ｎ次キャッシュ、ｎ−１次キャッシュ、・・・と、階層を追って段階的にスヌープを行う方法がある。この方法によれば、消費電力の増加を抑制することができる。ただし、総てのキャッシュメモリの内容を順次確認するので、スヌープ処理に時間がかかる。
【０００６】
そこで、不必要なスヌープ処理によるキャッシュアクセスを減少させ、キャッシュの一致性保証を高速に行うことが可能なキャッシュメモリ制御装置が提案されている（例えば、特許文献１参照。）。
【０００７】
上述のキャッシュメモリ制御装置では、スヌープ方式とディレクトリ方式とを併用することにより、不必要なスヌープ処理を減少させている。しかし、この装置でも、スヌープを行う場合は、総てのキャッシュメモリの内容の確認が必要であり、スヌープ処理自体には、処理に時間がかかるという問題が依然として残る。
【特許文献１】特開平１０−５５３１４号公報  （第４ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明の目的は、キャッシュの階層を追って段階的にスヌープを行うときの処理時間を短縮することのできるキャッシュスヌープ制御装置およびキャッシュスヌープ処理方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、ｎ次の階層を有するキャッシュメモリに対して、ｎ次キャッシュメモリから階層を追って段階的にスヌープを行うスヌープ処理を制御するキャッシュスヌープ制御装置であって、それぞれの階層のキャッシュメモリの各インデックスの各ウェイに対応して、そのウェイに有効なデータが存在しているかどうかを示す有効ビットを生成する有効ビット生成手段と、ｎ次から２次までの階層のキャッシュメモリの各インデックスの各ウェイが、その階層よりも下位階層のキャッシュメモリに対して排他的な内容を保持しているかどうかを示す排他ビットを生成する排他ビット生成手段と、前記有効ビットおよび前記排他ビットの情報にもとづいて、各階層のキャッシュメモリのスヌープ動作の実行を制御するスヌープ実行制御手段と、を有することを特徴とするキャッシュスヌープ制御装置が提供される。
【００１０】
また、本発明の別の一態様によれば、ｎ次の階層を有するキャッシュメモリに対して、ｎ次キャッシュメモリから階層を追って段階的にスヌープを行うスヌープ処理方法であって、スヌープ対象アドレスに一致するアドレスのウェイが有効なデータを有していることを検出したときは、そのウェイの前記データが、そのウェイを有するキャッシュメモリの階層よりも下位の階層に位置するキャッシュメモリに対して排他的であるかどうかを検査し、排他的であると判明したときは、その時点でスヌープ動作を終了させることを特徴とするキャッシュスヌープ処理方法が提供される。
【００１１】
また、本発明のさらに別の一態様によれば、ｎ次の階層を有するキャッシュメモリに対して、ｎ次キャッシュメモリから階層を追って段階的にスヌープを行うスヌープ処理方法であって、スヌープ要求を受けたときに、スヌープ対象アドレスにもとづいて読み出すべきインデックスを決定するステップと、前記ｎ次の階層を有するキャッシュメモリそれぞれの前記インデックスのウェイの中に有効ウェイがあるかどうかを判定するステップと、前記インデックスのウェイの中に有効ウェイがあると判定されたときは、その中で最も上位階層のキャッシュメモリのウェイを選出するステップと、前記選出されたウェイのタグが示すアドレスが前記スヌープ対象アドレスと一致しているかどうかを判定するステップと、前記選出されたウェイのタグが示すアドレスが前記スヌープ対象アドレスと一致していると判定されたときは、前記選出されたウェイの内容が、そのウェイを有するキャッシュメモリの階層よりも下位の階層に位置するキャッシュメモリに対して排他的であるかどうかを判定するステップと、を有し、前記選出されたウェイの内容が下位の階層に位置するキャッシュメモリに対して排他的であると判定されたときは、スヌープ動作を終了させることを特徴とするキャッシュスヌープ処理方法が提供される。
【発明の効果】
【００１２】
本発明によれば、キャッシュの階層を追って段階的にスヌープを行うときに、スヌープ処理時間を短縮することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施例を図面を参照して説明する。
【実施例】
【００１４】
図１は、本発明の実施例に係るキャッシュスヌープ制御装置の構成の例を示すブロック図である。
【００１５】
本実施例のキャッシュスヌープ制御装置１は、スヌープ要求を受けて、ｎ次キャッシュメモリ１００、（ｎ−１）次キャッシュメモリ２００、・・・、１次キャッシュメモリ３００、というｎ次の階層を有するキャッシュメモリのｎ次キャッシュメモリ１００から階層を追って段階的にスヌープを行うときに、各キャッシュメモリに対して、スヌープ処理の実行を制御するスヌープ実行制御信号を出力する。
【００１６】
ここで、ｎ次キャッシュメモリは、データが格納されるメモリ部１０１と、メモリ部１０１へのデータの書き込み／読み出しを制御する制御部１０２と、スヌープ動作を制御するスヌープ制御部１０３と、を有する。
【００１７】
なお、この例では、メモリ部１０１は、インデックスごとに４つのウェイ（Ｗａｙ０〜Ｗａｙ３）を有するものとし、それぞれのウェイは、データアレイ部（Ｄａｔａ０〜Ｄａｔａ３）と、タグアレイ部（Ｔａｇ０〜Ｔａｇ３）を有するものとする。データアレイ部のデータとタグアレイ部のタグの１ペアが、１つのキャッシュデータを構成する。
【００１８】
同様に、（ｎ−１）次キャッシュメモリ２００から１次キャッシュメモリ３００までの各階層のキャッシュメモリも、インデックスごとに４つのウェイを有する構成のメモリ部２０１、・・・、メモリ部３０１を持つものとし、また、制御部２０２、・・・、制御部３０２と、スヌープ制御部２０３、・・・、スヌープ制御部３０３と、を有するものとする。
【００１９】
キャッシュスヌープ制御装置１は、それぞれの階層のキャッシュメモリの各インデックスの各ウェイに対応して、そのウェイに有効なデータが存在しているかどうかを示す有効ビットを生成する有効ビット生成部１１と、ｎ次から２次までの階層のキャッシュメモリの各インデックスの各ウェイが、その階層よりも下位階層のキャッシュメモリに対して排他的な内容を保持しているかどうかを示す排他ビットを生成する排他ビット生成部１２と、有効ビット生成部１１で生成された有効ビットおよび排他ビット生成部１２で生成された排他ビットの情報にもとづいて、各階層のキャッシュメモリのスヌープ動作の実行を制御するスヌープ実行制御部１３と、を有する。
【００２０】
さらに、キャッシュスヌープ制御装置１は、有効ビット生成部１１で生成された有効ビットを格納する有効ビットアレイ１４と、排他ビット生成部１２で生成された排他ビットを格納する排他ビットアレイ１５と、を有する。
【００２１】
図２に、有効ビットアレイ１４の構成の例を示す。
【００２２】
有効ビットアレイ１４は、各キャッシュメモリの各ウェイの有効ビットをインデックスに対応付けて配列している。したがって、インデックスを指定して、有効ビットアレイ１４から有効ビットを読み出せば、どのキャッシュメモリのどのウェイのデータが有効か、が直ちに判明する。
【００２３】
図３に、排他ビットアレイ１５の構成の例を示す。
【００２４】
排他ビットアレイ１５は、ｎ次から２次までの階層のキャッシュメモリごとに、各インデックスの各ウェイの排他ビットを配列している。したがって、キャッシュメモリの階層、インデックスおよびウェイを指定して、排他ビットアレイ１５から排他ビットを読み出せば、指定したウェイが、その階層よりも下位階層のキャッシュメモリに対して、排他的な内容を保持しているかどうか、が直ちに判明する。
【００２５】
図１に戻って、スヌープ実行制御部１３は、スヌープ要求を受けると、同時に発行されるアドレスデータに記載されているインデックスの値を読み取り、有効ビットアレイ１４からそのインデックスの各ウェイの有効ビットを読み出す。読み出した有効ビットの中でウェイのデータが有効であることを示す有効ビットがあれば、そのウェイをタグ読み出しウェイと決定する。ここで、タグ読み出しウェイとは、キャッシュメモリからタグを読み出すウェイのことを指す。このとき、複数のキャッシュメモリにタグ読み出しウェイがあるときは、その総てをタグ読み出しウェイとする。
【００２６】
続いて、スヌープ実行制御部１３は、タグ読み出しウェイを有するキャッシュメモリの中で最も上位階層のキャッシュメモリのウェイを選出し、そのキャッシュメモリに対して、スヌープ動作を行うように指示する。このとき、タグ読み出しウェイを有するキャッシュメモリの中で最も上位階層のキャッシュメモリが、ｎ次キャッシュメモリ１００であるとは限らない。ｎ次キャッシュメモリ１００もしくはそれに連続する階層のキャッシュメモリの中で、タグ読み出しウェイを有さないキャッシュメモリに対しては、スヌープ実行制御部１３はスヌープ動作の指示を出さない。したがって、そのキャッシュメモリではスヌープ動作が行われず、その分、スヌープ処理時間が短縮される。
【００２７】
スヌープ実行制御部１３から指示を受けたキャッシュメモリは、スヌープ実行制御部１３により選出されたウェイのタグが示すアドレスが、スヌープ対象のアドレスと一致（スヌープヒット）しているかどうかを判定する。スヌープヒットしていれば、そのキャッシュメモリはスヌープ動作を行う。
【００２８】
また、スヌープヒットしたときは、スヌープ実行制御部１３は、続いて、排他ビットアレイ１５を読み出して、そのウェイに対する排他ビットを検査する。そのとき、排他ビットが排他を示すときは、その階層より下のキャッシュメモリへは、キャッシュ動作の指示を出さない。すなわち、この階層より下のキャッシュメモリのスヌープ動作を抑止する。
【００２９】
一方、検査した排他ビットが、排他でないことを示すときは、タグ読み出しウェイを有するキャッシュメモリの中で、次に上位となる階層のキャッシュメモリのウェイを選出し、そのキャッシュメモリに対して、スヌープ動作を行うように指示する。このとき、最初に選出したキャッシュメモリと次に選出したキャッシュメモリとの間に、途中階層のキャッシュメモリがあっても、その途中階層のキャッシュメモリに対してはスヌープ動作の指示を行わない。その分、キャッシュ処理時間が短縮される。
【００３０】
このように、スヌープ実行制御部１３は、有効ビットアレイ１４に格納されている有効ビットの情報と、排他ビットアレイ１５に格納されている排他ビットの情報とを利用して、キャッシュ動作の必要なキャッシュメモリに対してのみ、スヌープ動作の指示を行う。
【００３１】
次に、本実施例のキャッシュスヌープ制御装置１を用いたキャッシュスヌープ処理の方法について、図４を用いて説明する。
【００３２】
図４は、本実施例のキャッシュスヌープ制御装置１を用いて、キャッシュスヌープ処理を行うときの処理の流れを示すフロー図である。
【００３３】
スヌープ要求を受けて、キャッシュスヌープ処理を開始すると、キャッシュスヌープ制御装置１は、先ず、同時に発行されるアドレスデータから、スヌープ対象として、読み出しインデックスを決定する（ステップＳ０１）。
【００３４】
続いて、キャッシュスヌープ制御装置１のスヌープ実行制御部１３が、有効ビットアレイ１４から、その読み出しインデックスの各ウェイの有効ビットを読み出し、ｎ次の階層を有するキャッシュメモリ（ｎ次キャッシュメモリ１００〜１次キャッシュメモリ３００）それぞれのインデックスの各ウェイの有効ビットの中に、そのウェイが有効であることを示す有効ビットがあるかどうかを判定する（ステップＳ０２）。この判定で、読み出しインデックスのウェイの中に有効ウェイがないと判定したときは（ＮＯ）、直ちに、キャッシュスヌープ処理を終了する。
【００３５】
一方、読み出しインデックスのウェイの中に有効ウェイがあると判定したときは（ＹＥＳ）、スヌープ実行制御部１３は、その中で最も上位階層のキャッシュメモリのウェイを選出する（ステップＳ０３）。
【００３６】
さらに、スヌープ実行制御部１３は、選出されたウェイを有するキャッシュメモリに対して、スヌープ動作を指示する。
【００３７】
スヌープ実行制御部１３からの指示を受けたキャッシュメモリは、スヌープ実行制御部１３により選出されたウェイのタグが示すアドレスが、スヌープ対象のアドレスと一致（スヌープヒット）しているかどうかを判定する（ステップＳ０４）。この判定で、選出されたウェイのタグが示すアドレスが、スヌープ対象のアドレスと一致しないときは（ＮＯ）、その結果をスヌープ実行制御部１３へ通知する。これを受けて、スヌープ実行制御部１３は、次に上位のキャッシュメモリのウェイを選出し（ステップＳ０５）、ステップＳ０４の処理へ戻る。
【００３８】
一方、ステップＳ０４の判定でスヌープヒットと判定したときは（ＹＥＳ）、その判定を行ったキャッシュメモリは、スヌープ動作を行うとともに、その判定結果をスヌープ実行制御部１３へ通知する。
【００３９】
この判定結果を受けると、スヌープ実行制御部１３は、排他ビットアレイ１５を読み出し、スヌープヒットしたウェイの内容が、そのウェイを有するキャッシュメモリの階層よりも下位の階層に位置するキャッシュメモリに対して排他的であるかどうかを判定する（ステップＳ０６）。
【００４０】
この判定で、スヌープヒットしたウェイの内容が下位の階層のキャッシュメモリに対して排他的でない、すなわち、スヌープヒットしたウェイの内容が下位の階層のキャッシュメモリにも存在すると判定されたときは（ＮＯ）、そのキャッシュメモリへのスヌープ動作が必要となるため、スヌープ実行制御部１３は、次に上位のキャッシュメモリのウェイを選出し（ステップＳ０５）、ステップＳ０４の処理へ戻る。
【００４１】
一方、ステップＳ０６の判定で、スヌープヒットしたウェイの内容が下位の階層のキャッシュメモリに対して排他的である、すなわち、スヌープヒットしたウェイの内容が下位の階層のキャッシュメモリには存在しないと判定されたときは（ＹＥＳ）、これ以上スヌープ処理を行う必要がないので、スヌープ処理を終了する。
【００４２】
このような本実施例によれば、それぞれの階層のキャッシュメモリの各インデックスの各ウェイに対応して生成したそのウェイに有効なデータが存在しているかどうかを示す有効ビットの情報と、ｎ次から２次までの階層のキャッシュメモリの各インデックスの各ウェイに対応して生成したそのウェイがその階層よりも下位階層のキャッシュメモリに対して排他的な内容を保持しているかどうかを示す排他ビットの情報と、を用いて、スヌープ動作の必要なキャッシュメモリを判定し、そのキャッシュメモリに対してのみ、スヌープ動作を指示するので、総てのキャッシュメモリの内容を順次確認するスヌープ方式に比べて、スヌープ処理に要する時間を短縮することができる。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施例に係るキャッシュスヌープ制御装置の構成の例を示すブロック図。
【図２】本発明の実施例のキャッシュスヌープ制御装置の有効ビットアレイの構成の例を示すブロック図。
【図３】本発明の実施例のキャッシュスヌープ制御装置の排他ビットアレイの構成の例を示すブロック図。
【図４】本発明の実施例のキャッシュスヌープ制御装置を用いたキャッシュスヌープ処理方法の例を示すフロー図。
【符号の説明】
【００４４】
１  キャッシュスヌープ制御装置
１１  有効ビット生成部
１２  排他ビット生成部
１３  有効ビットアレイ
１４  排他ビットアレイ
【図１】
2008146237.tif 000003
【図２】
2008146237.tif 000004
【図３】
2008146237.tif 000005
【図４】
2008146237.tif 000006