(57)【要約】【課題】階層型キャッシュメモリシステムにおけるライトバック処理の高速化。【解決手段】第１キャッシュメモリと第２キャッシュメモリとを備える階層型キャッシュメモリシステムにおいて、第１キャッシュメモリが記憶するダーティなデータをメインメモリに書き戻すべく出力するコントローラと、第１キャッシュメモリから出力されたダーティなデータのメインメモリへの書き戻しと第２キャッシュメモリが記憶するダーティなデータのメインメモリへの書き戻しを並列して処理するコントローラとを備えるキャッシュメモリシステム。【選択図】図５
2009053820.tif 000002
【特許請求の範囲】
【請求項１】
ダーティな第１ダーティデータを記憶する第１キャッシュメモリ及び第１キャッシュコントローラを備える第１キャッシュシステムと、
ダーティな第２ダーティデータを記憶する第２キャッシュメモリ及び第２キャッシュコントローラを備える第２キャッシュシステムと、を備え、
前記第１キャッシュコントローラは、前記第１ダーティデータを前記第１キャッシュメモリから読み出して前記第２キャッシュシステムに出力し、
前記第２キャッシュコントローラは、前記第１キャッシュコントローラによる前記第１ダーティデータの出力と並行して、すでに出力された前記第１ダーティデータをメインメモリへ出力することを特徴とする階層型キャッシュメモリシステム。
【請求項２】
前記第２キャッシュコントローラは、すでに出力された前記第１ダーティデータを前記メインメモリに出力すると共に、前記第２ダーティデータを前記メインメモリに出力することを特徴とする請求項１に記載の階層型キャッシュメモリシステム。
【請求項３】
前記第２キャッシュコントローラは、出力された前記第１ダーティデータを前記第２キャッシュメモリに書き込みつつ、前記第２キャッシュメモリに書き込まれた前記第１ダーティデータを前記メインメモリに出力することを特徴とする請求項２に記載の階層型キャッシュメモリシステム。
【請求項４】
前記第２キャッシュコントローラは、前記第１キャッシュコントローラが出力した前記第１ダーティデータを前記第２のキャッシュメモリに書き込むことなく前記メインメモリに出力することを特徴とする請求項２に記載の階層型キャッシュメモリシステム。
【請求項５】
前記第２キャッシュコントローラは、前記第２ダーティデータを、出力された前記第１ダーティデータの前記メインメモリへの出力の合間に前記メインメモリに対して出力することを特徴とする請求項４に記載の階層型キャッシュメモリシステム。
【請求項６】
前記第１キャッシュコントローラは、前記第１ダーティデータの内の一部のデータを前記第２キャッシュシステムに出力するとともに、前記第２キャッシュコントローラは、前記第１キャッシュコントローラによる前記一部のデータの出力と並行して、前記一部のデータの内のすでに出力されたデータと、前記一部のデータに対応する前記第２ダーティデータとを前記メインメモリに出力することを特徴とする請求項２に記載の階層型キャッシュメモリシステム。
【請求項７】
前記第１キャッシュメモリおよび前記第２キャッシュメモリは、前記第１ダーティデータと前記第２ダーティデータとを、インデックスとウェイにより管理するセットアソシエイティブ方式のキャッシュメモリであって、
前記第１キャッシュコントローラは、前記第１ダーティデータの内、インデックスが小さいデータから順次前記第２キャッシュシステムに出力し、
前記第２キャッシュコントローラは、前記第１キャッシュコントローラが出力している前記第１ダーティデータのインデックスの値より小さいインデックスを有する前記第１ダーティデータ及び前記第２ダーティデータを前記メインメモリに出力することを特徴とする請求項２に記載の階層型キャッシュメモリシステム。
【請求項８】
前記第１キャッシュコントローラは、タグとインデックスとを用いて前記第２キャッシュシステムへ出力する前記第１ダーティデータの一部分を指定するとともに、前記第１ダーティデータの前記一部分を前記第２キャッシュシステムに出力し、
前記第２キャッシュコントローラは、前記第１ダーティデータの前記一部分と前記第１ダーティデータの前記一部分に対応する前記第２ダーティデータの一部分とをそれぞれ前記メインメモリに出力することを特徴とする請求項７に記載の階層型キャッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層型キャッシュメモリシステムに関し、特にライトバック制御装置を備えた階層型キャッシュメモリシステムに関する。
【背景技術】
【０００２】
高速で動作することが可能な中央処理装置（ＣＰＵ）と低速で動作する大容量の外部メモリ（メインメモリ）との間にキャッシュメモリを設けたコンピュータシステムでは、ＣＰＵがキャッシュメモリに書き込んで更新したデータであって、外部メモリには書き込まれていないダーティなデータが発生する。ここで、ＣＰＵは、ＣＰＵに供給されるクロックを停止し、キャッシュメモリに供給される電源を落としてスリープモードに移行する際、キャッシュメモリに記憶されたダーティなデータを外部メモリに全て書き戻す（ライトバックする）必要がある。キャッシュメモリが記憶しているデータは、キャッシュメモリに供給される電源の停止によってすべて失われてしまうからである。
【０００３】
ＣＰＵと外部メモリとの間に一次キャッシュと二次キャッシュが設けられたコンピュータシステムにおいては、一次キャッシュに記憶されたダーティなデータは一旦、一次キャッシュから二次キャッシュにライトバックされる。その後、一次キャッシュから二次キャッシュにライトバックされたデータと、これらのデータ以外で二次キャッシュに記憶されているダーティなデータと、が合わせて二次キャッシュから外部メモリにライトバックされる。一次キャッシュから二次キャッシュへのダーティなデータのライトバックが完了した時点で、ＣＰＵはスリープモードに移行することができる。
【０００４】
図１はＣＰＵ１と、一次キャッシュとして機能する記憶領域２aを含むＬ１キャッシュシステムと、２次キャッシュとして機能する記憶領域１２１を含むＬ２キャッシュシステムと、外部メモリ３と、からなるコンピュータシステムを示す。図９は、Ｌ２キャッシュシステムの従来の構成を表した図である。キャッシュメモリ回路３２は図１に示す記憶領域１２１を含む。記憶領域２ａは２ウェイ−セットアソシエイティブ方式のキャッシュメモリであって、図２に示すデータをインデックスとウェイとで管理し記憶する。記憶領域１２１は４ウェイ−セットアソシエイティブ方式のキャッシュメモリであって、図３に示すデータをインデックスとウェイとで管理し記憶する。図２および図３においてＤｉｒｔｙと記載されたデータは、ＣＰＵにより書き込まれ、更新されたダーティなデータであることを表す。
【０００５】
図１０は、図９に示したＬ２キャッシュシステムを含む図１のコンピュータシステムにおけるライトバック処理の流れを表す。上記従来技術では図１０にあるように、まずＣＰＵ１がＬ１キャッシュシステムに指示を送ることにより、Ｌ１キャッシュシステムは（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）であるダーティなデータを記憶領域２aから記憶領域１２１にライトバックする。以降、Ｌ１キャッシュシステムは（Ｔａｇ，Ｉｎｄｅｘ）＝（７０），（５１），（３２），（５３）であるデータを順番に記憶領域１２１にライトバックする。すなわち、Ｌ１キャッシュシステムは、記憶領域２aに記憶されたダーティなデータを、インデックスの値が小さいものから順番に出力する。Ｌ１キャッシュシステムは、Ｌ１キャッシュシステムとＬ２キャッシュシステムとの間に設けられているバスを所定時間占有し、各データを記憶領域２ａから記憶領域１２１へライトバックする。したがって、例えば図３を参照すると、（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０），（５１），（３２），（５３）であるデータが記憶領域１２１に書き込まれる。そして、ＣＰＵ１は、Ｌ１キャッシュシステムが記憶領域２aに記憶されたダーティなデータをすべて記憶領域１２１にライトバックした後、Ｌ２キャッシュシステム内に含まれるコマンドレジスタ３６にライトバックモードを設定する。このライトバックコマンドの設定とともに、ＣＰＵ１は、開始アドレスレジスタ３４に記憶領域１２１が有するインデックスの値の内の最小の値を設定し、終了アドレスレジスタ３５に記憶領域１２１が有するインデックスの値の内の最大の値を設定する。例えば図９に示す記憶領域１２１においては、ＣＰＵ１は開始アドレスレジスタ３４にインデックス“０”を、終了アドレスレジスタ３５には“３”を設定する。ＣＰＵ１は以上の処理を行った後、ＣＰＵ１に供給されるクロックを停止するとともにＬ１キャッシュシステムへの電源供給を停止する処理を行い、スリープモードに移行する。
【０００６】
その後、開始アドレスレジスタ３４は記憶したインデックスの値０をアドレスカウントレジスタ３７に出力し、アドレスカウントレジスタは受信したインデックスの値０を記憶するとともに、比較器３９へ出力する。比較器３９は終了アドレスレジスタが出力したインデックスの値３とアドレスカウントレジスタ３７が出力したインデックスの値０を比較する。ここで、アドレスカウントレジスタ３７が出力するインデックスの値が終了アドレスレジスタが出力するインデックスの値より小さい場合、比較器３９はライトバック制御回路４０にライトバック要求信号を送信する。ライトバック要求信号を受信したライトバック制御回路４０は、キャッシュメモリ回路３２およびメモリ側バスインターフェース３３にライトバック実行信号を送信する。ライトバック実行信号を受信したキャッシュメモリ回路３２は、アドレスカウントレジスタ３７から読み出したインデックスの値０を有する記憶領域１２１内のデータであって、ダーティであるものをメモリ側バスインターフェース３３を介して外部メモリへライトバックする。具体的には（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）、（７０）であるデータを外部メモリ３へライトバックする。一方、ライトバック制御回路４０は、比較器３９からライトバック要求信号を受信した場合、カウントアップ回路３８にカウントアップ要求信号を出力する。カウントアップ回路３８はアドレスカウントレジスタ３７から読み出したインデックスの値０のカウントアップを行い、インデックスの値１を算出し、このインデックスの値１をアドレスカウントレジスタ３７に送信する。アドレスカウントレジスタ３７はインデックスの値０をインデックスの値１に更新して記憶する。
【０００７】
アドレスカウントレジスタ３７は、インデックスの値１を記憶すると、このインデックスの値１を上述の説明と同様に比較器３９に出力する。そうすると、先程と同様に、比較器３９がライトバック制御回路４０にライトバック要求信号を送信し、このライトバック要求信号を受信したライトバック制御回路４０はキャッシュメモリ回路３２とメモリ側バスインターフェース３３にライトバック実行信号を送信する。そしてライトバック実行信号を受信したキャッシュメモリ回路３２はアドレスカウントレジスタ３７からインデックスの値１を読み出す。その後、キャッシュメモリ回路３２は、読み出したインデックスの値１を有する記憶領域１２１内のデータであって、ダーティであるものをメモリ側バスインターフェース３３を介して外部メモリへライトバックする。具体的には（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）であるデータを外部メモリ３へライトバックする。また、ライトバック要求信号を受信したライトバック制御回路４０はカウントアップ回路３８にカウントアップ要求信号を送信し、カウントアップ回路３８はアドレスカウントレジスタ３７が記憶するインデックスの値１を読み出してカウントアップする。カウントアップ回路３８はインデックスの値１をカウントアップしてインデックスの値２を算出し、アドレスカウントレジスタ３７へ送信する。以降、同様にアドレスカウントレジスタ３７が記憶するインデックスの値が２、３と遷移し、キャッシュメモリ回路３２は対応するインデックスの値を有し、かつダーティなデータを記憶領域１２１から外部メモリ３へライトバックする（具体的には（Ｔａｇ， Ｉｎｄｅｘ）＝（３２），（５３）であるデータ）。アドレスカウントレジスタ３７が記憶するインデックスの値が３になると、比較器３９がアドレスカウントレジスタ３９から受信するインデックスの値と終了アドレスレジスタ３５から受信するインデックスの値が一致するため、比較器３９はライトバック制御回路４０およびメモリ側バスインターフェース３３にライトバック終了信号を送信する。このライトバック終了信号を受信したライトバック制御回路４０は、キャッシュメモリ回路３２にライトバック停止信号を送信する。キャッシュメモリ回路３２はこのライトバック停止信号を受信すると、記憶領域１２１に記憶され、インデックスの値が３であってダーティなデータをメモリ側バスインターフェース３３を介して外部メモリ３にライトバックし、その後、Ｌ２キャッシュシステムをスリープモードに移行させる。
【０００８】
一方、上記従来技術に関連する技術として、ダーティなキャッシュラインが連続する場合の連続的なライトバック処理に伴うシステムバスの使用効率を向上させるために、キャッシュラインを走査してダーティなキャッシュラインを検出するライトバック制御部と、システムバス状態を監視するスヌープ部と、検出されたダーティなキャッシュラインのデータをバッファし、システムバスがアイドル状態のときに外部メモリへのライトバックを行うシングルライトバックライトバッファー部とを備えたキャッシュメモリのライトバック装置が特許文献１に開示されている。また、ＭＥＳＩプロトコルにより制御される階層型キャッシュシステムにおいて、あるキャッシュラインの全ウェイがステートＭであることを確認できた場合に、キャッシュミスによるライトバック要求が発生する前に先行してライトバックを行ってしまう階層型キャッシュシステムが特許文献２に開示されている。
【０００９】
【特許文献１】特開２００６−９１９９５号公報
【特許文献２】特開平１１−１０２３２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記従来技術では、Ｌ１キャッシュシステムが記憶領域２ａから記憶領域１２１へのライトバックを完了させた後にＬ２キャッシュシステムが記憶領域１２１から外部メモリ３へのライトバックを開始するため、Ｌ１キャッシュシステムがライトバックを開始してからＬ２キャッシュシステムが外部メモリへのライトバックを終了するまでに多くの時間を要する。
【課題を解決するための手段】
【００１１】
本発明の階層型キャッシュメモリシステムは、ダーティな第１ダーティデータを記憶する第１キャッシュメモリ及び第１キャッシュコントローラを備える第１キャッシュシステムと、ダーティな第２ダーティデータを記憶する第２キャッシュメモリ及び第２キャッシュコントローラを備える第２キャッシュシステムと、を有し、第１キャッシュコントローラは第１ダーティデータを第１キャッシュメモリから読み出して第２キャッシュシステムに出力し、第２キャッシュコントローラは、第１キャッシュコントローラによる第１ダーティデータの出力と並行して、出力された第１ダーティデータをメインメモリへ出力することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、第１キャッシュメモリからの第１ダーティデータの出力と、第２キャッシュメモリからの第１ダーティデータの出力が並行して行われるため、階層型キャッシュメモリにおけるライトバック処理を高速化することが可能となる。
【発明を実施するための最良の形態】
【００１３】
［実施例１］
続いて、本発明を実施するための最良の形態について図面を参照して詳細に説明する。従来と同様、本実施例においても図１に示すコンピュータシステムを適用する。
【００１４】
図２は、図１のＬ１キャッシュシステム２の記録領域２ａを模式的に表した図である。以下、本実施例では、Ｌ１キャッシュシステム２の記録領域２ａは、図２に示したとおり、２ウェイセットアソシエイティブ方式のデータ格納構造を持つものとして説明する。また、図２の「Ｄｉｒｔｙ」との文字が付されたデータは、ＣＰＵ１によって更新されたダーティなデータであることを表しており、後述する動作例では、これらのデータが、ライトバックすべきデータとしてＬ２キャッシュシステム１０側に送られる。また、Ｌ１キャッシュシステムは、内部に制御部（キャッシュコントローラ）を有し、このキャッシュコントローラはＬ１キャッシュシステムの動作を制御する。
【００１５】
図３は、図１のＬ２キャッシュシステム１０の記録領域１２１を模式的に表した図である。以下、本実施例では、Ｌ２キャッシュシステム１０の記録領域１２１は、図３に示したとおり、４ウェイセットアソシエイティブ方式のデータ格納構造を持つものとして説明する。図３の「Ｄｉｒｔｙ」との文字が付されたデータは、外部メモリ（メインメモリ）３にライトバックされていないダーティなデータであることを表しており、後述する動作例では、Ｌ１キャッシュシステム２から送られるライトバックデータに加えて、これらのデータもライトバック対象となる。
【００１６】
これらのセットアソシエイティブ方式では、キャッシュの１つのブロックに複数のデータを格納することが可能となっている。例えば、図４に示した外部メモリ３上のアドレスのインデックス（Ｉｎｄｅｘ）部分を同じくするデータは、図２、図３の対応インデックスの任意のウェイに格納される。また、同一インデックス（Ｉｎｄｅｘ）に格納されたデータ同士は、タグ（Ｔａｇ）部分にて識別可能となっている。例えば、「８０」というアドレスを指定した場合、図２、図３のインデックス（Ｉｎｄｅｘ）が「０」のブロックにタグが「８」であるデータがある場合に、キャッシュヒットとなり、タグが「８」であるデータがない場合は、ミスヒットとなる。
【００１７】
図５は、本発明の第１の実施例に係るＬ２キャッシュシステムの詳細構成を表したブロック図である。また、Ｌ１キャッシュシステムの動作は、例えばＬ１キャッシュシステム内部に存在する制御部（キャッシュコントローラ）が制御するものとすることができる。以下では、Ｌ１キャッシュシステムが行う動作は係るキャッシュコントローラが制御しているものとする。図１および図５を参照して、Ｌ１キャッシュシステムは、ＣＰＵ１からの指示を受け、ＣＰＵ側バスインターフェース（ＣＰＵ側ＢＵＳ  Ｉ／Ｆ）を介して記憶領域２ａに記憶されているダーティなデータをキャッシュメモリ回路１２内に含まれるバッファ１２２に出力するとともに、バッファ１２２に出力したデータのインデックスの値をアドレスレジスタ１９に出力する。ＣＰＵ１は、Ｌ１キャッシュシステムがライトバック処理を実行する際に記憶領域２ａが有する最小のインデックスの値を開始アドレスレジスタ１４に出力するとともに、同じく記憶領域２ａが有する最大のインデックスの値を終了アドレスレジスタ１５に出力する。また、ＣＰＵ１は、Ｌ２キャッシュシステムに処理を実行させるためのコマンドをコマンドレジスタ１６に出力する。この点、上述の従来技術では、Ｌ１キャッシュシステムが記憶領域２ａ内のダーティなデータを記憶領域１２１へライトバックした後に、ＣＰＵ１が開始アドレスレジスタ３４および終了アドレスレジスタ３５に値を設定し、コマンドレジスタ３６にコマンドを設定していたことと異なる。また、上述の従来技術では、ＣＰＵ１が開始アドレスレジスタ３４に設定した値は、記憶領域１２１が有する最小のインデックスの値であり、ＣＰＵ１が終了アドレスレジスタ３５に設定した値は記憶領域１２１が有する最大のインデックスであった。
【００１８】
開始アドレスレジスタ１４はＣＰＵ１から受け取ったインデックスの値を記憶するとともに、記憶した当該インデックスの値をアドレスカウントレジスタ１７に出力する。終了アドレスレジスタは、ＣＰＵ１から受け取ったインデックスの値を記憶するとともに、当該インデックスを比較器２０へ出力する。コマンドレジスタ１６はＣＰＵ１が出力したコマンドから、ＣＰＵ１が指示したライトバックモードを示すモード信号をライトバック制御回路２２へ出力する。
【００１９】
アドレスカウントレジスタ１７は開始アドレスレジスタ１４から受け取ったインデックスの値を比較器２０、比較器２１へ出力する。また、後に、アドレスカウントレジスタ１７は、カウントアップ回路１８がカウントアップした新たなインデックスの値を記憶して比較器２０および２１に出力する。
【００２０】
比較器２１はアドレスレジスタ１９が出力するインデックスの値と、アドレスカウントレジスタが出力するインデックスの値とを受信して比較する。比較の結果、比較器２１は、アドレスレジスタが出力するインデックスの値がアドレスカウントレジスタが出力するインデックスより大きい場合にライトバック制御回路２２に対してライトバック要求信号を送信する。比較器２０は、アドレスカウントレジスタが出力するインデックスの値と終了アドレスレジスタが出力するインデックスの値１５とを比較する。アドレスカウントレジスタの出力するインデックスの値が終了アドレスレジスタの出力するインデックスの値と等しい場合には、比較器２０は、Ｌ１キャッシュシステムがそのインデックスの値を有するダーティなデータを記憶領域２ａから記憶領域１２１へすべてライトバックした後にスリープモードに移行すると判断し、ライトバック制御回路２２に対してＬ１キャッシュシステム−ライトバック終了信号を送信する。
【００２１】
ライトバック制御回路２２は、比較器２１からライトバック要求信号を受け取った場合、キャッシュメモリ回路１２内に含まれる制御部１２４およびメモリ側バスインターフェース１３にライトバック実行信号を出力するとともに、カウントアップ回路１８にカウントアップ要求信号を出力する。また、ライトバック制御回路２２は、比較器２０からＬ１キャッシュシステム−ライトバック終了信号を受信した場合、制御部１２４にもＬ１キャッシュシステム−ライトバック終了信号を出力する。
【００２２】
バッファ１２２はＬ１キャッシュシステムが出力するダーティなデータを保持する。また、制御部１２４からの読み出し信号に応答して、保持しているデータを記憶領域１２１に出力する。例えばバッファ１２２は複数のデータを保持できるバッファであって、制御部１２４からの読み出し信号に応答して保持しているデータを受信した順番に出力するＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）とすることができる。バッファ１２３も同様のバッファとすることができる。
【００２３】
制御部１２４は、バッファ１２２に読み出し信号を送信する。また制御部１２４は、ライトバック制御回路２２からライトバック実行信号を受け取った場合、アドレスカウントレジスタ１７からインデックスの値を読み出す。そして制御部１２４は読み出したインデックスの値を有するデータはもはやＬ１キャッシュシステムからライトバックされることはないと判断し、記憶領域１２１に読み出し信号を送信する。記憶領域１２１は、制御部１２４からの読み出し信号に従い、制御部１２４がアドレスカウントレジスタ１７から読み出したインデックスの値を有するダーティなデータをバッファ１２３に出力する。
【００２４】
バッファ１２３は、記憶領域１２１から受け取ったデータを保持する。そしてバッファ１２３は、制御部１２４がバッファ１２３に対して送信する出力信号に応答して、メモリ側バスインターフェースを介して外部メモリに出力する。
【００２５】
以下、図１ないし図７を参照して、本実施例のライトバック動作について説明する。まずＣＰＵ１がコマンドレジスタ１６にライトバックモードを示す所定のコマンドを設定する。これを第１のモードということにすると、コマンドレジスタは第１のモードを示すモード信号をライトバック制御回路２２に送信する。この第１のモードの場合には、ライトバック制御回路２２はこの時点では制御部１２４に信号を出力しない。次いでＣＰＵ１は、開始アドレスレジスタ１４及び終了アドレスレジスタ１５に記憶領域２ａにおけるライトバックの始点及び終点を設定する。例えば図２に示すデータを記憶領域２ａが記憶している場合、ＣＰＵ１はライトバックの始点としてインデックスの値０を、終点としてインデックスの値３を設定する。
【００２６】
そして開始アドレスレジスタ１４は記憶したインデックスの値０をアドレスカウントレジスタ１７に出力し、アドレスカウントレジスタ１７はインデックスの値０を記憶する。また、アドレスカウントレジスタ１７は、記憶したインデックスの値０を比較器２０、比較器２１へ出力する。
【００２７】
次に、Ｌ１キャッシュシステムが記憶領域２ａに格納されているデータのライトバックを開始する。Ｌ１キャッシュシステム内の制御部は図２に示す記憶領域２ａに記憶されているダーティなデータを、インデックスが小さいダーティなデータから順番に読み出して順次バッファ１２２に出力する。すなわち、本実施例における具体例では、Ｌ１キャッシュシステム内の制御部は、記憶領域２ａに記憶されているダーティなデータを、（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０），（５１），（３２），（５３）の順番でバッファ１２２へ出力する。まずＬ１キャッシュシステムの制御部は最初に図２にある（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）のデータをバッファ１２２へ出力する。バッファ１２２は（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）のデータを保持する。また、当該制御部は当該出力データのインデックスである０をアドレスレジスタ１９に出力する。
次に、Ｌ１キャッシュシステムが記憶領域２ａに格納されているデータのライトバックを開始する。Ｌ１キャッシュシステムは図２に示す記憶領域２ａに記憶されているダーティなデータを、インデックスが小さいダーティなデータから順番にバッファ１２２に出力する。すなわち、本実施例における具体例では、Ｌ１キャッシュシステムは、記憶領域２ａに記憶されているダーティなデータを、（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０），（５１），（３２），（５３）の順番でバッファ１２２へ出力する。まずＣＰＵ１は最初に図２にある（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）のデータをバッファ１２２へ出力する。バッファ１２２は（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）のデータを保持する。また、Ｌ１キャッシュシステムは当該出力データのインデックスである０をアドレスレジスタ１９に出力する。
【００２８】
アドレスレジスタ１９は、受信したインデックスの値０を記憶して比較器２１へ出力する。比較器２１はアドレスカウントレジスタ１7が出力したインデックスの値０と、アドレスレジスタ１９が出力したインデックスの値０とを比較する。この場合、アドレスレジスタ１９の出力するインデックスの値は０であり、アドレスカウントレジスタが比較器２１へ出力するインデックスの値も０である。したがって、比較器２１は、Ｌ１キャッシュシステムは現在、記憶領域２ａに記憶され、かつインデックスの値０を有するダーティなデータをライトバックしている最中であると判断し、ライトバック制御回路２２に対してライトバック実行信号を送信しない。具体的にはＬ１キャッシュシステム２の制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）であるデータをバッファ１２２に出力している。
【００２９】
比較器２０はアドレスカウントレジスタ１７が出力するインデックスの値０と、終了アドレスレジスタの値３とを比較する。この場合、アドレスカウントレジスタ１７が出力するインデックスの値０と、終了アドレスレジスタの値３とは異なる値であるため、ライトバック制御回路２２にＬ１キャッシュシステム−ライトバック終了信号を出力しない。
【００３０】
アドレスレジスタ１９が記憶するインデックスの値が０である間、比較器２１はライトバック制御回路２２にライトバック要求信号を送信しない。そうすると、ライトバック制御回路２２も、制御部１２４にライトバック実行信号を出力しない。一方、Ｌ１キャッシュシステムの制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０）までのデータをバッファ１２２に出力することになる。したがって、制御部１２４は、バッファ１２２に対して読み出し信号を送信する。制御部１２４は、Ｌ１キャッシュシステムが出力し、かつバッファ１２２が保持するデータ（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０）までを読み出して、それらのデータを記憶領域１２１に書き込む。ここでは便宜上、図３を参照して、（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０）であるデータはそれぞれ記憶領域１２１のインデックス０、Ｗａｙ３，Ｗａｙ２に上書きされたとする。
【００３１】
そしてＬ１キャッシュシステム２の制御部は、（Ｔａｇ， Ｉｎｄｅｘ）＝（８０），（７０）であるデータをバッファ１２２に対してすべて出力した後、続いてデータ（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）を出力する。また、この制御部はアドレスレジスタ１９に対し、インデックスの値１を出力する。アドレスレジスタ１９は係るインデックスの値１を記憶して比較器２１へ出力する。このとき、アドレスレジスタ１９が出力するインデックスの値は１であり、アドレスカウントレジスタが出力するインデックスの値は０である。したがって、アドレスレジスタ１９が出力するインデックスの値がアドレスカウントレジスタ１７が出力するインデックスの値より大きいため、比較器２１はライトバック制御回路２２に対し、ライトバック要求信号を送信する。またこの時点において、比較器２０はＬ１キャッシュシステム−ライトバック終了信号を出力しない。
【００３２】
比較器２１からライトバック要求信号を受信したライトバック制御回路２２は、制御部１２４およびメモリ側バスインターフェースにライトバック実行信号を送信する。ライトバック実行信号を受信した制御部１２４は、アドレスカウントレジスタ１７にアクセスし、このアドレスカウントレジスタ１７からインデックスの値０を読み出す。そして制御部１２４はＬ１キャッシュシステムからインデックスの値０を有するダーティなデータがバッファ１２２に送信されることはもはやないと判断する。なぜなら、Ｌ１キャッシュシステムの制御部は記憶領域２ａに記憶されたダーティなデータを、インデックスが小さいものから順番に出力するからである。したがって、制御部１２４は、記憶領域１２１に読み出し信号を送信し、記憶領域１２１はダーティなデータであって、インデックスの値０を有するデータをバッファ１２３に出力する。具体的には、図３にあるように、記憶領域１２１は（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０），（４０）であるデータをバッファ１２３に出力する。一方で、制御部１２４はバッファ１２３に出力信号を送信する。そしてこの出力信号を制御部１２４から受信したバッファ１２３は、記憶領域１２１から受信した（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０），（４０）のデータをメモリ側バスインターフェースを介して外部メモリ３にライトバックする。図７を参照すると、時点ｔｓ１の時点から、（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０），（４０）であるデータが順番に出力されていることが分かる。また、ライトバック制御回路２２はカウントアップ回路１８にカウントアップ要求信号を送信する。このカウントアップ要求信号を受信したカウントアップ回路１８は、アドレスカウントレジスタ１７から読み出したインデックスの値０をカウントアップしてインデックスの値１を算出し、このインデックスの値１をアドレスカウントレジスタ１７に送信する。アドレスカウントレジスタ１７はインデックスの値０をこのインデックスの値１に更新し、記憶する。一方、Ｌ１キャッシュシステムの制御部がバッファ１２２に出力した（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）のデータは、制御部１２４によって上述の説明と同様に記憶領域１２１に書き込まれる。
【００３３】
バッファ１２３が外部メモリ３にデータをライトバックしている際にも、Ｌ１キャッシュシステムの制御部は記憶領域２ａに記憶されたダーティなデータをバッファ１２２に出力することを続ける。例えば図２、図７を参照すると、本例では、（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）であるデータの後に（Ｔａｇ，Ｉｎｄｅｘ）＝（３２）であるデータがバッファ１２２に送信されている。そうすると、アドレスレジスタ１９が記憶するインデックスの値は２となる。ここで、この時点においてアドレスカウントレジスタ１７が記憶するインデックスの値は１である。そうすると、比較器２１はアドレスレジスタからインデックスの値２を受信し、アドレスカウントレジスタ１７からインデックスの値１を受信してこれらのインデックスの値を比較する。アドレスレジスタ１９から受信したインデックスの値がアドレスカウントレジスタ１７から受信したインデックスの値より大きいので、比較器２１はライトバック要求信号をライトバック制御回路２２に送信する。比較器２０はＬ１キャッシュシステム−ライトバック終了信号をライトバック制御回路２２には送信しない。
【００３４】
ライトバック要求信号を受信したライトバック制御回路２２は、制御部１２４およびメモリ側バスインターフェースにライトバック実行信号を送信する。ライトバック制御回路２２からライトバック実行信号を受信した制御部１２４は、アドレスカウントレジスタ１７から、このアドレスカウントレジスタ１７が記憶するインデックスの値１を読み出すとともに、この読み出したインデックスの値１を有するデータはＬ１キャッシュシステムからバッファ１２２に送信されることはないと判断する。そして制御部１２４は記憶領域１２１に読み出し信号を送信する。記憶領域１２１はこの制御信号に応答し、記憶領域１２１が記憶するダーティなデータであって、インデックスの値１を有するデータをバッファ１２３に送信する。例えば、図３および図７を参照して、記憶領域１２１は（Ｔａｇ，Ｉｎｄｅｘ）＝（５１），（１１）をバッファ１２３に送信する。
【００３５】
一方で、制御部１２４はバッファ１２３に出力信号を送信する。そしてこの出力信号を制御部１２４から受信したバッファ１２３は、記憶領域１２１から受信した（Ｔａｇ，Ｉｎｄｅｘ）＝（５１），（１１）であるデータをメモリ側バスインターフェースを介して外部メモリ３にライトバックする。図７を参照すると、時点ｔｓ９から、（Ｔａｇ，Ｉｎｄｅｘ）＝（５１），（１１）であるデータが順番に出力されていることが分かる。
【００３６】
また、カウントアップ回路１８にカウントアップ要求信号を送信する。カウントアップ要求信号を受信したカウントアップ回路１８はアドレスカウントレジスタ１７が記憶するインデックスの値１を読み出してカウントアップし、インデックスの値２を算出する。そしてカウントアップ回路１８は、このインデックスの値２をアドレスカウントレジスタ１７に送信し、アドレスカウントレジスタ１７は受信したインデックスの値２を記憶する。ここで、Ｌ１キャッシュシステムの制御部がバッファ１２２に出力した（Ｔａｇ，Ｉｎｄｅｘ）＝（３２）は、制御部１２４が行うバッファ１２２からの読み出し動作により、記憶領域１２１に書き込まれる。
【００３７】
バッファ１２３が（Ｔａｇ，Ｉｎｄｅｘ）＝（５１），（１１）を外部メモリにライトバックしている際に、すでにＬ１キャッシュシステムの制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）を出力している。そうすると、アドレスレジスタの記憶するインデックスの値は３となる。以降は同様に、アドレスカウントレジスタ１７が記憶するインデックスの値２に基づきライトバック制御回路２２が制御部１２４などにライトバック実行信号などを送信し、制御部１２４はアドレスカウントレジスタ１７が記憶するインデックスの値２を読み出し、記憶領域１２１がインデックスの値２を有し記憶領域１２１に記憶されているダーティなデータをバッファ１２３に送信する。そしてバッファ１２３は制御部１２４からの出力信号に応答して外部メモリ３に記憶領域１２１から受信したダーティなデータをライトバックする。例えば図３および図７を参照して、（Ｔａｇ，Ｉｎｄｅｘ）＝（３２）がバッファ１２３から、すなわちＬ２キャッシュシステムから出力されている。また、Ｌ１キャッシュシステムの制御部がバッファ１２２に出力した（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）のデータは、上記と同様、記憶領域１２１に書き込まれる。
【００３８】
ライトバック制御回路２２は、制御部１２４へのライトバック実行信号の送信とともに、カウントアップ回路１８にカウントアップ要求信号を送信しているので、カウントアップ回路はアドレスカウントレジスタ１７が有するインデックスの値２を読み出してカウントアップし、インデックスの値３を算出する。カウントアップ回路１８はこのインデックスの値３をアドレスカウントレジスタ１７に送信し、アドレスカウントレジスタ１７はこのインデックスの値３を記憶する。
【００３９】
この時点でアドレスカウントレジスタ１７が記憶するインデックスの値は３となる。アドレスカウントレジスタはインデックスの値３を比較器２０および２１へ送信する。Ｌ１キャッシュシステムの制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）のデータをすでに出力しているので、アドレスレジスタ１９が記憶するインデックスの値も３である。そうすると、比較器２１は、アドレスカウントレジスタ１７から受信したインデックスの値とアドレスレジスタ１９から受信したインデックスの値とがともに３となるため、ライトバック制御回路２２に対してライトバック実行信号を送信しない。その一方で、比較器２０は、アドレスカウントレジスタ１７と終了アドレスレジスタ１５から受信したインデックスの値が３であって等しいため、ライトバック制御回路２２にＬ１キャッシュシステム−ライトバック終了信号を送信する。ライトバック制御回路２２は、このＬ１キャッシュシステム−ライトバック終了信号を受信したのち、係るＬ１キャッシュシステム−ライトバック終了信号を制御部１２４に送信する。Ｌ１キャッシュシステム−ライトバック終了信号を受信した制御部１２４は、アドレスカウントレジスタ１７からインデックスの値３を読み出す。そして制御部１２４は、Ｌ１キャッシュシステムがこのインデックスの値３より大きいインデックスの値を有するダーティなデータをバッファ１２２に出力することはないと判断する。そして制御部１２４は、記憶領域１２１に読み出し信号を送信する。記憶領域１２１は、インデックスの値が３以上であって、記憶領域１２１が有するダーティなデータをバッファ１２３に出力する。制御部１２４はバッファ１２３に出力信号を送信する。この制御信号に応答して、バッファ１２３は記憶領域１２１から受信したダーティなデータをメモリ側バスインターフェース１３を介して外部メモリ３へライトバックする。例えば図７では（Ｔａｇ，Ｉｎｄｅｘ）＝（５３），（８３）がＬ２キャッシュシステムから出力されている。なお、本例では記憶領域１２１が有するインデックスの値の最大値は３であり、３より大きなインデックスの値を有するダーティなデータが記憶領域１２１から出力されることはない。しかし例えば記憶領域１２１が３より大きなインデックスで管理されるダーティなデータを有する場合には、それらの値がバッファ１２３から出力される。
【００４０】
本実施例においては記憶領域１２１がインデックスの値３を有するダーティなデータをバッファ１２３に出力し、それらのデータをバッファ１２３がメモリ側バスインターフェース１３を介して外部メモリ３にライトバックしたならば、Ｌ２キャッシュシステムはスリープモードに移行する。
【００４１】
ここで、図７および図１０を比較すると、上記本実施形態に係るライトバック処理を用いることで、Ｌ１キャッシュシステムがダーティなデータの出力を開始してからＬ２キャッシュシステムが最後のダーティなデータを出力するまでの時間を短縮できることが分かる。本実施形態に係るライトバック処理では、Ｌ１キャッシュシステムからのライトバックの終了を待つことなくＬ２キャッシュシステムがライトバックを開始し、Ｌ１キャッシュシステムからＬ２キャッシュシステムへのライトバックと、Ｌ２キャッシュシステムから外部メモリへのライトバックとが並列で実行されることになる。
【００４２】
［実施例２］
続いて、上記第１の実施例のキャッシュメモリ回路１２の動作に変更を加え、ライトバック処理時間をより短縮できるようにした第２の実施例について説明する。以下、図１ないし図６および図８を参照して第２の実施例の詳細を説明する。
【００４３】
まずＣＰＵ１がコマンドレジスタ１６にライトバックモードを示す所定のコマンドを設定する。これを第２のモードということにすると、コマンドレジスタは第２のモードを示すモード信号をライトバック制御回路２２に送信する。この第２のモードを示すモード信号をライトバック制御回路２２が受信した場合、上述の第１の実施例とは異なり、ライトバック制御回路は制御部１２４に対して第２のモードを示すモード信号を送信する。制御部１２４はこのモード信号を受信することにより、ＣＰＵ１が指定したライトバック処理の方法が第２のモードであることを認識し、バッファ１２２および１２３に対して出力信号を送信する。その後、Ｌ１キャッシュシステムの制御部は記憶領域２ａからダーティなデータをライトバックすることを開始する。実施例１で説明した場合と同様に、図２に示された（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０），（５１），（３２），（５３）であるデータが順次バッファ１２２に送信される。
【００４４】
ここで、制御部１２４から出力信号を受信したバッファ１２２は、Ｌ１キャッシュシステムの制御部が記憶領域２ａから読み出して出力するダーティなデータを受信した後すぐにこれらのデータをバッファ１２３に出力する。制御部１２４から制御信号を受信したバッファ１２３はバッファ１２２から受信したこれらのダーティなデータをすぐに、メモリ側バスインターフェース１３を介して外部メモリ３にライトバックする。したがって、図８にあるとおり、Ｌ１キャッシュシステムから（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）であるデータが送信された後、すぐにこの（Ｔａｇ，Ｉｎｄｅｘ）＝（８０）であるデータがＬ２キャッシュシステムから送信される。同様にＬ１キャッシュシステムから（Ｔａｇ，Ｉｎｄｅｘ）＝（７０）であるデータが送信された後、すぐにこの（Ｔａｇ，Ｉｎｄｅｘ）＝（７０）であるデータがＬ２キャッシュシステムから送信される。すなわち、ＣＰＵ１がコマンドレジスタ１６に設定したこの第２のモードでは、実施例１とは異なり、制御部１２４はバッファ１２２が受信したダーティなデータを記憶領域１２１に書き込まない。バッファ１２２とバッファ１２３はＬ１キャッシュシステムから受け取ったダーティなデータを次々とスルーし、外部メモリ３へライトバックする。ここで、制御部１２４は、バッファ１２２および１２３がスルーしたダーティなデータのタグとインデックスの情報を所定の記憶手段に記憶しておく。
【００４５】
その一方で、Ｌ１キャッシュシステムの制御部が（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）を送信し、バッファ１２２がこの（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）を受信すると、実施例１と同様にアドレスレジスタ１９はインデックスの値１を記憶することとなる。実施例１と同様に考えて、この時点でのアドレスカウントレジスタ１７が記憶しているインデックスの値は０である。そうすると、比較器２１はアドレスレジスタ１９からインデックスの値１を、アドレスカウントレジスタ１７からインデックスの値０を受信する。比較器２１はアドレスレジスタ１９が記憶するインデックスの値がアドレスカウントレジスタ１７が記憶するインデックスより大きいため、ライトバック制御回路２２に対し、ライトバック要求信号を送信する。
【００４６】
比較器２１からライトバック要求信号を受信したライトバック制御回路２２は、制御部１２４にライトバック実行信号を送信するとともに、カウントアップ回路１８にカウントアップ要求信号を送信する。
【００４７】
ライトバック実行信号を受信した制御部１２４は、アドレスカウントレジスタ１７が記憶するインデックスの値０をアドレスカウントレジスタ１７から読み出す。そして制御部１２４は、このインデックスの値０を有するダーティなデータはもはやＬ１キャッシュシステムからライトバックされることはないと判断する。そして記憶領域１２１に読み出し信号を送信する。記憶領域１２１はこの受信した読み出し信号に従って、Ｌ１キャッシュシステムからライトバックされなかったデータであって、かつ、インデックスの値０を有するダーティなデータをバッファ１２３に出力する。この記憶領域１２１の動作は例えば制御部１２４がバッファ１２２とバッファ１２３をスルーしたデータのタグとインデックス、本例では（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（７０）を記憶していることにより可能となる。制御部１２４は、記憶領域１２１が、バッファ１２３に対してＬ１キャッシュシステムからライトバックされなかったデータであって、かつ、インデックスの値０を有するダーティなデータを、バッファ１２３がバッファ１２２から受信したダーティなデータを出力する合間に出力するよう制御する。したがって、例えば図８では、Ｌ２キャッシュシステムが（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）と（３２）であるダーティなデータを出力する間に（Ｔａｇ，Ｉｎｄｅｘ）＝（４０）のデータを出力していることが分かる。
【００４８】
以降は第１の実施例と同様にアドレスレジスタ１９やアドレスカウントレジスタが記憶するインデックスの値が遷移し、比較器２１がその遷移に応答してライトバック実行信号をライトバック制御回路２２へ出力し、ライトバック制御回路２２はライトバック実行信号を制御部１２４へ出力する。制御部１２４はそのライトバック実行信号を受信した時点でアドレスカウントレジスタ１９から読み出す。そして制御部１２４はこの読み出したインデックスの値を有するダーティなデータであって、かつＬ１キャッシュシステムからライトバックされていないデータを記憶領域１２１が出力するように指示する。その指示を受け、記憶領域１２１はバッファ１２３にダーティなデータを出力する。その際、記憶領域１２１は、バッファ１２３に対してＬ１キャッシュシステムからライトバックされなかったデータであって、かつ、インデックスの値０を有するダーティなデータを、バッファ１２３がバッファ１２２から受信したダーティなデータを出力する合間に出力する。例えば図８では、Ｌ２キャッシュシステムが（Ｔａｇ，Ｉｎｄｅｘ）＝（３２）と（５３）であるダーティなデータを出力する間に（Ｔａｇ，Ｉｎｄｅｘ）＝（１１）のデータを出力していることが分かる。
【００４９】
Ｌ１キャッシュシステムの制御部が記憶領域２ａから（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）を出力した場合にはアドレスレジスタ１９が記憶するインデックスの値が３となる。その際、第１の実施例と同様に、終了アドレスレジスタ１５が記憶するインデックスも３であることから、比較器２０はＬ１キャッシュシステム−ライトバック終了信号をライトバック制御回路２２に送信する。その後、制御部１２４はライトバック制御回路２２からＬ１キャッシュシステム−ライトバック終了信号を受信し、インデックスの値が３より大きな値を有するダーティなデータはもはやＬ１キャッシュシステムから送信されることはないと判断する。そして制御部１２４はＬ１キャッシュシステムがバッファ１２２に送信しなかったダーティなデータであって、かつ記憶領域１２１に記憶され、インデックスの値が３以上のダーティなデータをバッファ１２３に出力するように記憶領域１２１に指示する。記憶領域１２１はそれらのデータをバッファ１２３に出力し、バッファ１２３は係るデータを外部メモリ３へライトバックする。その後、Ｌ２キャッシュシステムはスリープモードに移行する。
【００５０】
以上のように動作する本発明の第２の実施例では、上記した第１の実施例と比較して、より高速にＬ２キャッシュシステム１０からダーティなデータを掃き出すことが可能となっており、例えば、Ｌ２キャッシュシステム１０のスリープモード（低消費電力モード）への遷移させる際の高速なライトバック処理に適用することが可能となる。
【００５１】
以上、本発明の好適な実施形態を説明したが、本発明の要旨を逸脱しない範囲で、キャッシュメモリの階層構成、大きさ、データ格納構造等に応じて各種の変形を行うことが可能である。例えば、上記した実施形態では、それぞれ連想度２、４を持つＬ１、Ｌ２の２階層のキャッシュ構成を持つコンピュータシステムに適用した例を挙げて説明したが、その他の連想度、３階層以上の階層キャッシュ構成を持つコンピュータシステムにも採用することが可能である。
【００５２】
また例えば、上記した実施形態では、終了アドレスレジスタ１５の終点を設定することによって、ライトバックの終点アドレスを指定するものとして説明したが、例えば、カウントアップ回路の動作回数を設定し、その回数内で、ライトバックを行うようにすることも可能である。
【００５３】
[実施例３]
これまでに説明した実施例１および２においては、Ｌ１キャッシュシステムは、Ｌ１キャッシュシステムが有する記憶領域２ａの全体を調査し、記憶領域２ａに記憶されているすべてのダーティなデータをＬ２キャッシュシステムにライトバックしていた。そして、Ｌ２キャッシュシステムも、Ｌ２キャッシュシステムが有する記憶領域１２１の全体を調査した上でダーティなデータをライトバックしていた。ここで、実施例３においては、Ｌ１キャッシュシステムの制御部は記憶領域２ａの内の一部の領域に含まれるダーティなデータのみをライトバックする。また、Ｌ２キャッシュシステムの制御部１２４も記憶領域１２１の内の一部の領域に含まれるダーティなデータのみをライトバックする。
【００５４】
図１１はこの実施例３におけるＬ２キャッシュシステムを示しており、図５に示したＬ２キャッシュシステムの制御部１２４がさらに、開始アドレスレジスタ１４と終了アドレスレジスタ１５の記憶するアドレス情報を読み出す機能を有している。ここで、実施例３においては、開始アドレスレジスタ１４および終了アドレスレジスタ１５は、図１に示すＬ１キャッシュシステムが有する記憶領域２ａのアドレス情報であるタグ、インデックス、オフセットの内、タグとインデックスを記憶する。なお、開始アドレスレジスタ１４にはこれまでの説明と同じようにインデックスのみを記憶させ、別にもうひとつ新たなレジスタを設け、その新たなレジスタがタグを記憶するようにしてもよい。終了アドレスレジスタ１５に関しても同様である。以下、図１ないし図４、図１１を参照して、実施例３におけるＬ１キャッシュシステム、Ｌ２キャッシュシステムの動作を具体的に説明する。
【００５５】
まず、実施例１および実施例２と同様にＣＰＵ１がコマンドレジスタ１６にライトバックモードを示す所定のコマンドを設定する。これを第３のライトバックモードということにする。ＣＰＵ１は、Ｌ１キャッシュシステム２が有する記憶領域２ａのアドレス情報の内のタグの値およびインデックスの値を開始アドレスレジスタ１４に設定する。例えば、ここではＣＰＵ１は開始アドレスレジスタ１４にタグの値４を設定しインデックスの値３を設定したとする。同様に、ＣＰＵ１は、終了アドレスレジスタ１５にも、記憶領域２aのアドレス情報の内のタグの値およびインデックスの値を設定する。例えば、ここではＣＰＵ１は終了アドレスレジスタ１５に対してタグの値７を設定し、インデックスの値１を設定したとする。開始アドレスレジスタ１４は、インデックスの値０をアドレスカウントレジスタ１７に出力し、アドレスカウントレジスタは受信したインデックスの値０を記憶する。そして終了アドレスレジスタ１５は、インデックスの値３を比較器２０へ送信する。
【００５６】
次に、第３のライトバックモードを示すコマンドがＣＰＵ１により設定されたコマンドレジスタ１６は、ライトバック制御回路２２に対して同様に第３のモードを示すモード信号を送信する。第３のモードを示すモード信号を受信したライトバック制御回路２２は、制御部１２４に対してこの第３のモードを示すモード信号を送信する。係る第３のモード信号を受信した制御部１２４は、Ｌ１キャッシュシステム２が行うライトバックのモードが第３のモードであることを認識し、開始アドレスレジスタ１４および終了アドレスレジスタ１５のそれぞれが記憶しているタグの値を読み出す。ここでは、制御部１２４は、開始アドレスレジスタ１４からタグの値４を読み出し、終了アドレスレジスタ１５からはタグの値７を読み出す。そして制御部１２４は、開始アドレスレジスタ１４および終了アドレスレジスタ１５から読み出したこれらのタグの値に基づき、Ｌ１キャッシュシステム２がライトバックするダーティなデータが有するアドレスの範囲を認識する。例えば、制御部１２４は開始アドレスレジスタ１４および終了アドレスレジスタ１５から、タグの値４および７を取得しているので、制御部１２４は、Ｌ１キャッシュシステムの制御部が記憶領域２ａに記憶されたデータの内、タグの値が４から７までのアドレスの範囲にあるダーティなデータのみをＬ２キャッシュシステム１０にライトバックすることを認識する。
【００５７】
ここで、制御部１２４はＬ１キャッシュシステム２の制御部がライトバックするデータをどのような処理方法で外部メモリ３にライトバックするかも認識する。その処理方法は、実施例１の箇所で説明した方法であってもよいし、実施例２の箇所で説明した方法であってもよい。ここでは、仮に、実施例１の箇所で説明した方法に従って制御部１２４はダーティなデータを外部メモリ３にライトバックすることを行うものとする。例えば、コマンドレジスタ１６およびライトバック制御回路２２を介して制御部１２４が受信する第３のモードを示すモード信号に、実施例１と実施例２のどちらの方法で外部メモリ３へのライトバックを実行するかを示す情報を盛り込むことができる。
【００５８】
Ｌ１キャッシュシステム２の制御部は、記憶領域２ａに記憶されているダーティなデータの内、インデックスの値が小さいものから順にＬ２キャッシュシステム１０に出力する。つまり、図２および図３を参照すると、Ｌ１キャッシュシステム２の制御部はインデックスの値０を有するダーティなデータから、順番に、インデックスの値３を有するダーティなデータまでをＬ２キャッシュシステム１０に出力する。ただし、実施例３においては、タグの値によってもＬ１キャッシュシステム２の制御部が出力するデータが変わる。Ｌ２キャッシュシステム１０に含まれる開始アドレスレジスタ１４および終了アドレスレジスタ１５は、タグの値４および７を記憶しているが、Ｌ１キャッシュシステム２の制御部もＣＰＵ１から係るタグの値４と７をあらかじめ認識する。係るタグの値４と７に従い、Ｌ１キャッシュシステム２の制御部は、まずインデックスの値が０であって、タグの値が４から７までの範囲にあるダーティなデータをＬ２キャッシュシステム１０に出力する。次に、Ｌ１キャッシュシステム２の制御部はインデックスの値が１であって、タグの値が４から７までの範囲にあるダーティなデータをライトバックする。以降、同様に、Ｌ１キャッシュシステム２の制御部は、インデックスの値が３であって、タグの値が４から７までの範囲にあるダーティなデータまでをＬ２キャッシュシステム１０に出力する。例えば図２を参照すると、Ｌ１キャッシュシステム２の制御部は、（Ｔａｇ，Ｉｎｄｅｘ）＝（７０），（５１），（５３）のみをライトバックする。（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（３２）は、ダーティなデータではあるが、タグの値が４から７までの範囲にないことから、Ｌ１キャッシュシステム２の制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（８０），（３２）のそれぞれのデータのライトバックを行わない。
【００５９】
上述したように、Ｌ１キャッシュシステム２の制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（７０），（５１），（５３）の順番で、これらのデータをＬ２キャッシュシステムに含まれるバッファ１２２に出力する。このとき、アドレスレジスタ１９は、Ｌ１キャッシュシステム２がバッファ１２２に出力したデータのインデックスを実施例１と同様に記憶する。
【００６０】
まず、Ｌ１キャッシュシステム２の制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（７０）のダーティなデータを出力する。そうすると、アドレスレジスタ１９は、実施例１と同様にインデックスの値０を記憶する。アドレスレジスタ１９は、記憶したインデックスの値０を比較器２１に出力する。一方、開始アドレスレジスタ１４は（Ｔａｇ，Ｉｎｄｅｘ）＝（４３）を記憶しているが、記憶した（Ｔａｇ，Ｉｎｄｅｘ）＝（４３）に関わらず、開始アドレスレジスタ１４はインデックスの値０をアドレスカウントレジスタ１７に出力する。したがって、アドレスカウントレジスタ１７はインデックスの値０を比較器２１および比較器２０へ出力する。そうすると、比較器２１は、アドレスレジスタ１９から受信したインデックスの値０とアドレスカウントレジスタ１７から受信したインデックスの値０とを比較する。アドレスレジスタ１９から受信したインデックスの値０とアドレスカウントレジスタ１７から受信したインデックスの値０とが等しいので、比較器２１はライトバック制御回路２２に対してライトバック要求信号を送信しない。なお、終了アドレスレジスタ１５は（Ｔａｇ，Ｉｎｄｅｘ）＝（７１）を記憶しているが、この（Ｔａｇ，Ｉｎｄｅｘ）＝（７１）に関わらず、終了アドレスレジスタ１５はインデックスの値３を比較器２０に出力する。そうすると、比較器２０は、終了アドレスレジスタ１５からインデックスの値は３を受信し、アドレスカウントレジスタ１７からインデックスの値０を受信する。この時点では、比較器２０が受信する両インデックスの値が一致しないので、比較器２０はＬ１キャッシュシステム−ライトバック終了信号を出力しない。また、（Ｔａｇ，Ｉｎｄｅｘ）＝（７０）のデータは、第１の実施例と同様に、Ｌ２キャッシュシステム１０の記憶領域１２１に書き込まれる。
【００６１】
次にＬ１キャッシュシステム２の制御部は（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）のダーティなデータをライトバックする。そうすると、アドレスレジスタ１９は、実施例１と同様にインデックスの値１を記憶する。アドレスレジスタ１９は、記憶したインデックスの値１を比較器２１に出力する。一方、比較器２１はアドレスカウントレジスタ１７からインデックスの値０を受信している。従って、比較器２１は、アドレスレジスタ１９から受信したインデックスの値１とアドレスカウントレジスタ１７から受信したインデックスの値０とを比較する。アドレスレジスタ１９から受信したインデックスの値１がアドレスカウントレジスタ１７から受信したインデックスの値０より大きいので、比較器２１はライトバック制御回路２２に対してライトバック要求信号を送信する。この時点では、比較器２０はＬ１キャッシュシステムーライトバック終了信号を出力しない。
【００６２】
比較器２１からライトバック要求信号を受信したライトバック制御回路２２は、制御部１２４に対してライトバック実行信号を送信する。ライトバック実行信号をライトバック制御回路２２から受信した制御部１２４は、アドレスカウントレジスタ１７が記憶するインデックスの値０を読み出す。そして制御部１２４は、Ｌ１キャッシュシステム２がインデックスの値０を有するダーティなデータをライトバックすることはないと判断する。実施例１と同様、Ｌ１キャッシュシステム２は小さいインデックスを有するダーティなデータから順番にライトバックするからである。そして、制御部１２４は、記憶領域１２１に読み出し信号を送信する。ここで、制御部１２４は、ライトバック制御回路２２から第３のライトバックモードを示すモード信号をあらかじめ受信した後、開始アドレスレジスタ１４および終了アドレスレジスタ１５からタグの値４および７を読み出している。ゆえに、制御部１２４は、Ｌ１キャッシュシステム２の制御部がバッファ１２２に対して出力するデータが有するタグの値は４から７までの範囲に限られることを認識している。したがって、制御部１２４は、読み出し信号を送信し、記憶領域１２１に対し、インデックスの値が０であって、かつタグの値が４から７までの範囲にあるダーティなデータを読み出すように指示する。記憶領域１２１は、制御部１２４からの読み出し信号に応答して、ダーティなデータを出力する。この例では、図３を参照すると、（Ｔａｇ，Ｉｎｄｅｘ）＝（４０），（７０）のデータをバッファ１２３に出力する。
【００６３】
なおこの例では、制御部１２４は実施例１に示した方法でバッファ１２２がＬ１キャッシュシステム２から受信したダーティなデータを処理するとしている。従って、この時点で、制御部１２４は（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）のデータを記憶領域１２１に書き込むことも行っている。しかし、この時点では、制御部１２４は、記憶領域１２１に対し、インデックスの値が０であって、かつ、タグの値が４から７までの範囲にあるダーティなデータを出力するように指示する。そうすると、記憶領域１２１は（Ｔａｇ，Ｉｎｄｅｘ）＝（４０），（７０）のデータをバッファ１２３に出力し、バッファ１２３は制御部１２４から受信する読み出し信号に応答してこの（Ｔａｇ，Ｉｎｄｅｘ）＝（４０），（７０）のデータを外部メモリ３にライトバックすることになる。また、制御部１２４が実施例２に示した方法でバッファ１２２がＬ１キャッシュシステム２から受信したダーティなデータを処理することもできる。その場合には、制御部１２４、バッファ１２３は、実施例２に示した方法に基づいて（Ｔａｇ，Ｉｎｄｅｘ）＝（４０），（７０）をライトバックする。
【００６４】
次に、Ｌ１キャッシュシステム２の制御部がバッファ１２２に対して（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）のデータを出力したとする。そうすると、これまで説明してきたように、アドレスレジスタ１９の記憶するインデックスの値は３となり、係るアドレスレジスタ１９は比較器２１にインデックスの値３を送信する。ここで、実施例１に示したように、カウントアップ回路１８などの動作により、アドレスカウントレジスタ１７が記憶するインデックスの値は０から１に変化しており、比較器２１はアドレスカウントレジスタ１７からこのインデックスの値１を受信する。そうすると、比較器２１は、アドレスレジスタ１９から受信したインデックスの値３と、アドレスカウントレジスタ１７から受信したインデックスの値１と、を比較し、ライトバック要求信号をライトバック制御回路２２に対して送信する。
【００６５】
その後、同様に、制御部１２４は、ライトバック実行信号をライトバック制御回路２から受信し、アドレスカウントレジスタ１７からインデックスの値１を読み出し、Ｌ１キャッシュシステム２がインデックスの値１を有するダーティなデータをライトバックすることはないと判断する。そして制御部１２４は、記憶領域１２１に対し、インデックスの値１を有し、かつタグの値が４から７までの範囲にあるダーティなデータをバッファ１２３へ出力するように指示する。図３を参照すれば、記憶領域１２１は、（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）をバッファ１２３に出力することになる。バッファ１２３は、実施例１に示す方法で、（Ｔａｇ，Ｉｎｄｅｘ）＝（５１）に係るデータを外部メモリ３へ出力する。また、（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）のデータは、第１の実施例と同様に、Ｌ２キャッシュシステム１０の記憶領域１２１に書き込まれる。
【００６６】
Ｌ１キャッシュシステム２の制御部が（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）をバッファ１２２に出力すると、アドレスレジスタ１９が記憶するインデックスが３となる。カウントアップ回路等の動作によりアドレスカウントレジスタ１７の記憶するインデックスの値は２となっているので、同様の処理に従い、制御部１２４は、記憶領域１２１に対し、インデックスの値２を有し、かつタグの値が４から7までの範囲にあるダーティなデータを読み出すように指示する。記憶領域１２１は対応するデータをバッファ１２３に出力し、バッファ１２３は受信したデータを外部メモリ３に出力してライトバックする。ここでは、図３を参照すると、記憶領域１２１は、ダーティなデータであってインデックスが２でありタグが４から７までの範囲にあるデータを記憶していないので、バッファ１２３はライトバックを行わない。
【００６７】
その後、カウントアップ回路１８の動作によってアドレスカウントレジスタが記憶するインデックスの値が２から３となり、比較器２０および比較器２１がアドレスカウントレジスタ１７からインデックスの値３を受信する。実施例１にあるように、アドレスレジスタ１９とアドレスカウントレジスタ１７とが記憶するインデックスの値はともに３であり同一であることから、この場合には比較器２１はライトバック制御回路２２にライトバック要求信号を送信することはない。一方で、終了アドレスレジスタ１５が比較器２０へ出力するインデックスの値が３であることから、比較器２０は実施例１と同様、ライトバック制御回路２２にＬ１キャッシュシステム−ライトバック終了信号を送信する。そうすると、ライトバック制御回路２２はＬ１キャッシュシステム−ライトバック終了信号を制御部１２４に送信する。係るＬ１キャッシュシステム−ライトバック終了信号をライトバック制御回路２２から受信した制御部１２４は、Ｌ１キャッシュシステム２がインデックスの値３より大きなインデックスの値を有するダーティなデータをＬ２キャッシュシステム１０に対してライトバックすることはないと判断する。そして制御部１２４は、記憶領域１２１に対し、インデックスが３以上、すなわちこの例ではインデックスの値が３であって、かつタグの値が４から7までの範囲にあるダーティなデータをバッファ１２３に出力するように指示する。図３を参照すると、記憶領域１２１は（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）のデータを出力することが分かる。記憶領域１２１からＴａｇ，Ｉｎｄｅｘ）＝（５３）のデータを受信したバッファ１２３は、（Ｔａｇ，Ｉｎｄｅｘ）＝（５３）のデータを外部メモリ３へライトバックする。
【００６８】
以上、説明したように、本実施例におけるライトバック処理では、開始アドレスレジスタ１４および終了アドレスレジスタ１５が記憶するタグの値を用いて、Ｌ１キャッシュシステム内の記憶領域２ａに記憶されるデータの内、一部のデータだけを外部メモリ３へライトバックすることが可能となる。
【図面の簡単な説明】
【００６９】
【図１】本発明を適用可能なコンピュータシステムの概略構成を表した図である。
【図２】図１のＬ１キャッシュシステムの記録領域を模式的に表した図である。
【図３】図１のＬ２キャッシュシステムの記録領域を模式的に表した図である。
【図４】Ｌ１キャッシュシステム及びＬ２キャッシュシステムのそれぞれが有する記憶領域のアドレス構造を示した図である。
【図５】本発明の第１の実施例に係るＬ２キャッシュシステムの詳細構成を表した図である。
【図６】図５のＬ２キャッシュシステムの動作を説明するための図である。
【図７】本発明の第１実施例に係るＬ２キャッシュシステムにおけるライトバック処理に要する時間を表した図である。
【図８】本発明の第２実施例に係るＬ２キャッシュシステムにおけるライトバック処理に要する時間を表した図である。
【図９】従来のＬ２キャッシュシステムの構成を表したブロック図である。
【図１０】従来のＬ２キャッシュシステムにおけるライトバック処理に要する時間を表した図である。
【図１１】本発明の第３の実施例に係るＬ２キャッシュシステムの詳細構成を表した図である。
【符号の説明】
【００７０】
１  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
２  Ｌ１キャッシュシステム
２ａ  記憶領域
３  外部メモリ（メインメモリ）
１０、３０  Ｌ２キャッシュシステム
１１、３１  ＣＰＵ側バスインターフェース（ＣＰＵ側ＢＵＳ  Ｉ／Ｆ）
１２、３２  キャッシュメモリ回路
１３、３３  メモリ側バスインターフェース（メモリ側ＢＵＳ  Ｉ／Ｆ）
１４、３４  開始アドレスレジスタ
１５、３５  終了アドレスレジスタ
１６、３６  コマンドレジスタ
１７、３７  アドレスカウントレジスタ
１８、３８  カウントアップ回路
１９  アドレスレジスタ
２０  比較器（第２の比較器）
２１、３９  比較器（第１の比較器）
２２、４０  ライトバック制御回路
１２１  記憶領域
１２２、１２３  バッファ
１２４  制御部
【図１】
2009053820.tif 000003
【図２】
2009053820.tif 000004
【図３】
2009053820.tif 000005
【図４】
2009053820.tif 000006
【図５】
2009053820.tif 000007
【図６】
2009053820.tif 000008
【図７】
2009053820.tif 000009
【図８】
2009053820.tif 000010
【図９】
2009053820.tif 000011
【図１０】
2009053820.tif 000012
【図１１】
2009053820.tif 000013