(57)【特許請求の範囲】
【請求項１】
コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、前記プロセッサが接続されるプロセッサバスと、メインメモリと、前記プロセッサバスと前記メインメモリとに接続されるキャッシュフラッシュ装置とを有するコンピュータシステムに適用されるキャッシュフラッシュ方法において、
モディファイドデータについてのリード要求を前記キャッシュフラッシュ装置から前記プロセッサバスだけに対して送り、
前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを前記キャッシュフラッシュ装置により受け取り、
前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行い、
キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とするキャッシュフラッシュ方法。
【請求項２】
前記キャッシュフラッシュ装置は、前記プロセッサバスと前記メインメモリとの間にインラインで接続されることを特徴とする請求項１記載のキャッシュフラッシュ方法。
【請求項３】
コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、メインメモリと、キャッシュフラッシュ装置とを備え、前記キャッシュフラッシュ装置と前記プロセッサとが第１のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記メインメモリとが前記第１のアドレスバスの一部とは独立した第２のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記プロセッサと前記メインメモリとがアドレスバスの他の部分を通じて接続されるコンピュータシステムに適用されるキャッシュフラッシュ方法であって、
前記第１のアドレスバスの一部に出力するアドレスビットと前記第２のアドレスバスの一部に出力するアドレスビットとを異なるようにしつつ、モディファイドデータについてのリード要求を前記キャッシュフラッシュ装置が前記アドレスバスに対して送り、
前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを前記キャッシュフラッシュ装置により受け取り、
前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行い、
キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とするキャッシュフラッシュ方法。
【請求項４】
前記リード要求時に、前記プロセッサにリード要求を観測させるためのアドレスビットを前記キャッシュフラッシュ装置から前記第１のアドレスバスの一部に出力すると共に、前記メインメモリには無関係のアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力し、
前記バーストライト時に、前記メインメモリに対するバーストライトを可能とするアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力することを特徴とする請求項３記載のキャッシュフラッシュ方法。
【請求項５】
前記の各アドレスバスの一部に出力するアドレスビットを偶数ビット数で構成することによりパリティ保護されたアドレスバスに対応させたことを特徴とする請求項４記載のキャッシュフラッシュ方法。
【請求項６】
前記プロセッサにリード要求を観測させるためのアドレスビットを全て“０”とし、前記メインメモリに無関係のアドレスビットを全て“１”とし、前記メインメモリに対するバーストライトを可能とするアドレスビットを全て“０”としたことを特徴とする請求項５記載のキャッシュフラッシュ方法。
【請求項７】
前記キャッシュフラッシュ装置にデータメモリを備えることにより外部キャッシュとしての機能を有するようにしたことを特徴とする請求項２記載のキャッシュフラッシュ方法。
【請求項８】
前記キャッシュフラッシュ装置にデータメモリを備えることにより外部キャッシュとしての機能を有するようにしたことを特徴とする請求項３乃至５のいずれかに記載のキャッシュフラッシュ方法。
【請求項９】
コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、前記プロセッサが接続されるプロセッサバスと、メインメモリと、前記プロセッサバスと前記メインメモリとに接続されるキャッシュフラッシュ装置とを有するコンピュータシステムに設けられるキャッシュフラッシュ装置において、
モディファイドデータについてのリード要求を前記プロセッサバスだけに対して送る手段と、
前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを受け取る手段と、
前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行う手段と
を具備し、キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とするキャッシュフラッシュ装置。
【請求項１０】
前記キャッシュフラッシュ装置は、前記プロセッサバスと前記メインメモリとの間にインラインで接続されることを特徴とする請求項９記載のキャッシュフラッシュ装置。
【請求項１１】
コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、メインメモリと、キャッシュフラッシュ装置とを備え、前記キャッシュフラッシュ装置と前記プロセッサとが第１のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記メインメモリとが前記第１のアドレスバスの一部とは独立した第２のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記プロセッサと前記メインメモリとがアドレスバスの他の部分を通じて接続されるコンピュータシステムに設けられるキャッシュフラッシュ装置であって、
前記第１のアドレスバスの一部に出力するアドレスビットと前記第２のアドレスバスの一部に出力するアドレスビットとを異なるようにしつつ、モディファイドデータについてのリード要求を前記アドレスバスに対して送る手段と、
前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを受け取る手段と、
前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行う手段と、
を具備し、キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とするキャッシュフラッシュ装置。
【請求項１２】
前記リード要求時に、前記プロセッサにリード要求を観測させるためのアドレスビットを前記キャッシュフラッシュ装置から前記第１のアドレスバスの一部に出力すると共に、前記メインメモリには無関係のアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力する手段と、
前記バーストライト時に、前記メインメモリに対するバーストライトを可能とするアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力する手段と
を更に具備したことを特徴とする請求項１１記載のキャッシュフラッシュ装置。
【請求項１３】
前記の各アドレスバスの一部に出力するアドレスビットを偶数ビット数で構成することによりパリティ保護されたアドレスバスに対応させたことを特徴とする請求項１２記載のキャッシュフラッシュ装置。
【請求項１４】
前記プロセッサにリード要求を観測させるためのアドレスビットを全て“０”とし、前記メインメモリに無関係のアドレスビットを全て“１”とし、前記メインメモリに対するバーストライトを可能とするアドレスビットを全て“０”としたことを特徴とする請求項１３記載のキャッシュフラッシュ装置。
【請求項１５】
前記キャッシュフラッシュ装置にデータメモリを備えることにより外部キャッシュとしての機能を有するようにしたことを特徴とする請求項１０記載のキャッシュフラッシュ装置。
【請求項１６】
前記キャッシュフラッシュ装置にデータメモリを備えることにより外部キャッシュとしての機能を有するようにしたことを特徴とする請求項１１乃至１３のいずれかに記載のキャッシュフラッシュ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コピーバック方式のキャッシュを有するコンピュータシステムに適用されるキャッシュフラッシュ方法および装置に関し、特にチェックポイント取得方式を採用するコンピュータシステムに適用されるキャッシュフラッシュ方法および装置にする。
【０００２】
【従来の技術】
一般に、計算機においては、プロセッサによるメインメモリへのアクセスを高速化するために、プロセッサが必要とするデータを一時的に格納するキャッシュが用いられている。通常、このキャッシュは、キャッシュブロックと呼ばれる所定の大きさのデータ単位でデータを保持する。また、このキャッシュは、キャッシュタグと呼ばれる管理情報を保持し、キャッシュに格納したキャッシュブロックのデータが、メインメモリの中のどのデータであるのか、およびプロセッサによって変更されてメインメモリの内容と異なっている状態（モディファイド状態、ダーティ状態）にあるか等を管理している。
【０００３】
プロセッサを複数設けた計算機システム（マルチプロセッサシステム）においては、複数のキャッシュ間でデータの一貫性を保証するために、スヌープ機構をもったキャッシュがよく用いられる。このスヌープ機構は、バス上に発行されたバスコマンド（又はトランザクション）が、自身のキャッシュに格納されたデータに影響を与えないか、あるいは自身のキャッシュに格納されたデータを応答として返さなければならないかを監視し、必要であれば、該当するデータの無効化などを行うものである。
【０００４】
コピーバック方式のキャッシュの場合、すなわち、プロセッサによるデータの更新を直ちにメインメモリに反映させないタイプのキャッシュの場合、プロセッサによってキャッシュ上で変更されてメインメモリの内容と異なっているデータ（モディファイド状態のデータ）を、積極的にメインメモリへ書き戻す操作が必要となる。例えば、スヌープ機構を持たない入出力装置に対してキャッシュが保持するデータを転送する場合などに必要となる。このキャッシュが保持するデータのうち、モディファイド状態にあるデータをメインメモリに書き戻すことをキャッシュフラッシュと呼ぶ。また、モディファイド状態にあるキャッシュブロックをモディファイドブロックと呼ぶ。
【０００５】
このキャッシュフラッシュは、特に、チェックポイント方式の計算機において必要とされる処理である。すなわち、計算機に何らかの障害が発生したときに、予め取得しておいたチェックポイントの時点から処理を再開するチェックポイント方式の計算機の場合、各チェックポイントの時点で、キャッシュ中にのみ存在する変更されたデータをまとめてメインメモリに書き戻す（キャッシュフラッシュする）必要があるためである。
【０００６】
上記キャッシュフラッシュ操作を実現する方式としては、プロセッサにキャッシュフラッシュ命令を実行させる方式と、キャッシュフラッシュ装置を用いてキャッシュフラッシュ命令を実行させる方式とが挙げられる。
【０００７】
キャッシュフラッシュ装置を用いる方式では、キャッシュフラッシュ装置からプロセッサバス上に非バーストリードトランザクションを発行することでプロセッサ内のダーティーラインをメインメモリに書き戻すようにしている。この場合のシステム構成例について以下に説明する。
【０００８】
図３０は、従来のキャッシュフラッシュ装置を含むコンピュータシステムの構成を示すブロック図である。
【０００９】
２はシステムバスであり、プロセッサ１１０，１２０と、メインメモリ制御装置５００と、Ｉ／Ｏ制御装置６００と、キャッシュフラッシュ装置１００とを接続し、データの受け渡しを行う。
【００１０】
１００はキャッシュフラッシュ装置であり、プロセッサ１１０，１２０が持つキャッシュメモリのキャッシュ状態を監視してキャッシュ管理用メモリ１０１にアドレス情報を記録し、キャッシュフラッシュが起動するとプロセッサからダーティーラインを読み出してメインメモリ制御装置５００に書き戻す。１０１はキャッシュ管理用メモリであり、プロセッサ１１０，１２０のキャッシュラインの状態を含むアドレス情報を記録する。
【００１１】
１１０，１２０はプロセッサである。１１１，１２１はそれぞれプロセッサ１１０，１２０のキャッシュメモリである。
【００１２】
５００はメインメモリを制御するメインメモリ制御装置である。５０１はメインメモリである。
【００１３】
６００はＩ／Ｏバス制御装置である。６０１，６０２はＩ／Ｏバス制御装置６００に接続されるＩ／Ｏバスである。
【００１４】
図３１は、キャッシュフラッシュが単独で実行される場合の動作を示すタイミングチャートである。ここでは、メインメモリ５０１にシンクロナスＤＲＡＭを使用している。
【００１５】
以下、図３１を参照して各種信号について説明する。なお、図中の横軸はバスサイクル数を示している。
【００１６】
システムバスのaddress はシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。システムバスのSnoop は、システムトランザクションに対するスヌープ応答であり、プロセッサ１１０，１２０のいずれかが出力する。この図の例では、“Modified”応答を出している。システムバスのDataは、システムトランザクションに対するデータであり、プロセッサ１１０，１２０のいずれかが出力する。なお、Readトランザクションに対するスヌープ応答が“Modified”以外の場合、通常はメインメモリ制御装置５００がデータを出力する。
【００１７】
メインメモリのAddress は、メインメモリ制御装置５００が出力するメインメモリ５０１のアドレスである。メインメモリのＲＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＲＡＳ信号である。メインメモリのＣＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＣＡＳ信号である。メインメモリのＷＥは、メインメモリ制御装置５００が出力するメインメモリ５０１のＷＥ信号である。メインメモリのDataは、メインメモリ制御装置５００とメインメモリ５０１の間のデータ信号である。ＣＡＳが“Ｌ”のときにＷＥが“Ｌ”であればメインメモリ制御装置５００がライトデータを出力し、ＣＡＳが“Ｌ”のときにＷＥが“Ｈ”であればメインメモリ５０１がリードデータを出力する。
【００１８】
図３２は、キャッシュフラッシュが３連続する場合の動作を示すタイミングチャートである。
【００１９】
以下、図３２を参照して各種信号について説明する。なお、図中の横軸はバスサイクル数を示している。また、図中の==、--、++はそれぞれ一番目、二番目、三番目のバストランザクションに対応する。
【００２０】
システムバスのaddress はシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。システムバスのSnoop は、システムトランザクションに対するスヌープ応答であり、プロセッサ１１０，１２０のいずれかが出力する。この図の例では、“Modified”応答を出している。システムバスのDataは、システムトランザクションに対するデータであり、プロセッサ１１０，１２０のいずれかが出力する。なお、Readトランザクションに対するスヌープ応答が“Modified”以外の場合、通常はメインメモリ制御装置５００がデータを出力する。
【００２１】
メインメモリのAddress は、メインメモリ制御装置５００が出力するメインメモリ５０１のアドレスである。メインメモリのＲＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＲＡＳ信号である。メインメモリのＣＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＣＡＳ信号である。メインメモリのＷＥは、メインメモリ制御装置５００が出力するメインメモリ５０１のＷＥ信号である。メインメモリのDataは、メインメモリ制御装置５００とメインメモリ５０１の間のデータ信号である。ＣＡＳが“Ｌ”のときにＷＥが“Ｌ”であればメインメモリ制御装置５００がライトデータを出力し、ＣＡＳが“Ｌ”のときにＷＥが“Ｈ”であればメインメモリ５０１がリードデータを出力する。
【００２２】
【発明が解決しようとする課題】
上述のキャッシュフラッシュ装置を用いてキャッシュフラッシュを行う方式では、一般にメインメモリは非バースト転送に対してプロセッサがキャッシュに“Modified”データを持っていることは想定しておらず、インプリメントを簡単にしている。このためにメインメモリの動作が「リード・モディファイ・ライト」となり、メインメモリがシステムの性能上のボトルネックとなっている。この結果、キャッシュフラッシュ時間が長くなるという問題がある。
【００２３】
一方、プロセッサにキャッシュフラッシュ命令を実行させる方式では、プロセッサの種類によってはキャッシュが全て無効化されてしまうため、キャッシュフラッシュ終了後に命令キャッシュ、データキャッシュの中身をメインメモリから読み出さなくてはならず、性能低下の要因となっている。
【００２４】
本発明は上記実情に鑑みてなされたものであり、キャッシュフラッシュ時にメインメモリがリード・モディファイ・ライト動作することなくバーストライト動作するようにして、キャッシュフラッシュ時間を短縮するキャッシュフラッシュ方法および装置を提供することを目的とする。
【００２５】
【課題を解決するための手段】
上記課題を解決するために、本発明のキャッシュフラッシュ方法は、コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、前記プロセッサが接続されるプロセッサバスと、メインメモリと、前記プロセッサバスと前記メインメモリとに接続されるキャッシュフラッシュ装置とを有するコンピュータシステムに適用されるキャッシュフラッシュ方法において、モディファイドデータについてのリード要求を前記キャッシュフラッシュ装置から前記プロセッサバスだけに対して送り、前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを前記キャッシュフラッシュ装置により受け取り、前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行い、キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とする。
【００２６】
なお、前記キャッシュフラッシュ方法において、前記キャッシュフラッシュ装置は、例えば前記プロセッサバスと前記メインメモリとの間にインラインで接続されるようにしてもよい。
【００２７】
また、本発明のキャッシュフラッシュ方法は、コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、メインメモリと、キャッシュフラッシュ装置とを備え、前記キャッシュフラッシュ装置と前記プロセッサとが第１のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記メインメモリとが前記第１のアドレスバスの一部とは独立した第２のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記プロセッサと前記メインメモリとがアドレスバスの他の部分を通じて接続されるコンピュータシステムに適用されるキャッシュフラッシュ方法であって、前記第１のアドレスバスの一部に出力するアドレスビットと前記第２のアドレスバスの一部に出力するアドレスビットとを異なるようにしつつ、モディファイドデータについてのリード要求を前記キャッシュフラッシュ装置が前記アドレスバスに対して送り、前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを前記キャッシュフラッシュ装置により受け取り、前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行い、キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とする。
【００２８】
また、前記キャッシュフラッシュ方法において、前記リード要求時に、前記プロセッサにリード要求を観測させるためのアドレスビットを前記キャッシュフラッシュ装置から前記第１のアドレスバスの一部に出力すると共に、前記メインメモリには無関係のアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力し、前記バーストライト時に、前記メインメモリに対するバーストライトを可能とするアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力するようにしてもよい。
【００２９】
また、前記キャッシュフラッシュ方法において、前記の各アドレスバスの一部に出力するアドレスビットを偶数ビット数で構成することによりパリティ保護されたアドレスバスに対応させるようにしてもよい。
【００３０】
また、前記キャッシュフラッシュ方法において、前記プロセッサにリード要求を観測させるためのアドレスビットを全て“０”とし、前記メインメモリに無関係のアドレスビットを全て“１”とし、前記メインメモリに対するバーストライトを可能とするアドレスビットを全て“０”とするようにしてもよい。
【００３１】
また、前記キャッシュフラッシュ方法において、前記キャッシュフラッシュ装置にデータメモリを備えることにより外部キャッシュとしての機能を有するようにしてもよい。
【００３２】
また、上記課題を解決するために、本発明のキャッシュフラッシュ装置は、コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、前記プロセッサが接続されるプロセッサバスと、メインメモリと、前記プロセッサバスと前記メインメモリとに接続されるキャッシュフラッシュ装置とを有するコンピュータシステムに設けられるキャッシュフラッシュ装置において、モディファイドデータについてのリード要求を前記プロセッサバスだけに対して送る手段と、前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを受け取る手段と、前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行う手段とを具備し、キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とする。
【００３３】
なお、前記キャッシュフラッシュ装置は、前記プロセッサバスと前記メインメモリとの間にインラインで接続されるものであってもよい。
【００３４】
また、本発明のキャッシュフラッシュ装置は、コピーバック方式のキャッシュを備えた少なくとも一つのプロセッサと、メインメモリと、キャッシュフラッシュ装置とを備え、前記キャッシュフラッシュ装置と前記プロセッサとが第１のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記メインメモリとが前記第１のアドレスバスの一部とは独立した第２のアドレスバスの一部を通じて接続され、前記キャッシュフラッシュ装置と前記プロセッサと前記メインメモリとがアドレスバスの他の部分を通じて接続されるコンピュータシステムに設けられるキャッシュフラッシュ装置であって、前記第１のアドレスバスの一部に出力するアドレスビットと前記第２のアドレスバスの一部に出力するアドレスビットとを異なるようにしつつ、モディファイドデータについてのリード要求を前記アドレスバスに対して送る手段と、前記リード要求に応じて送られてきた前記プロセッサからのモディファイドデータを受け取る手段と、前記モディファイドデータの受け取りが完了したキャッシュラインだけについて前記メインメモリに対するバーストライトを行う手段と、を具備し、キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようにしたことを特徴とする。
【００３５】
また、前記キャッシュフラッシュ装置は、前記リード要求時に、前記プロセッサにリード要求を観測させるためのアドレスビットを前記キャッシュフラッシュ装置から前記第１のアドレスバスの一部に出力すると共に、前記メインメモリには無関係のアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力する手段と、前記バーストライト時に、前記メインメモリに対するバーストライトを可能とするアドレスビットを前記キャッシュフラッシュ装置から前記第２のアドレスバスの一部に出力する手段とを更に具備していてもよい。
【００３６】
また、前記キャッシュフラッシュ装置は、前記の各アドレスバスの一部に出力するアドレスビットを偶数ビット数で構成することによりパリティ保護されたアドレスバスに対応させたものであってもよい。
【００３７】
また、前記キャッシュフラッシュ装置は、前記プロセッサにリード要求を観測させるためのアドレスビットを全て“０”とし、前記メインメモリに無関係のアドレスビットを全て“１”とし、前記メインメモリに対するバーストライトを可能とするアドレスビットを全て“０”としたものであってもよい。
【００３８】
また、前記キャッシュフラッシュ装置は、データメモリを備えることにより外部キャッシュとしての機能を有するようにしたものであってもよい。
【００３９】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
【００４０】
［第１実施形態］
図１は、本発明の第１実施形態に係るキャッシュフラッシュ装置を含むコンピュータシステムの全体構成を示すブロック図である。
【００４１】
１はシステムバスであり、メインメモリ制御装置５００とＩ／Ｏ制御装置６００とキャッシュフラッシュ装置１００とを接続し、データの受け渡しを行う。
【００４２】
１０はプロセッサバスであり、プロセッサ１１０，１２０とキャッシュフラッシュ装置１００を接続し、データの受け渡しを行う。
【００４３】
１００は本発明に係るキャッシュフラッシュ装置であり、プロセッサ１１０，１２０のキャッシュ状態を監視してキャッシュ管理用メモリ１０１にアドレス情報を記録し、キャッシュフラッシュが起動するとプロセッサからダーティーラインを読み出してメインメモリ制御装置５００に書き戻す。１０１はキャッシュ管理用メモリであり、プロセッサ１１０，１２０のキャッシュラインの状態を含むアドレス情報を記録する。
【００４４】
１１０，１２０はプロセッサである。１１１，１２１はそれぞれプロセッサ１１０，１２０のキャッシュメモリ（コピーバック方式）である。
【００４５】
５００はメインメモリを制御するメインメモリ制御装置である。５０１はメインメモリである。
【００４６】
６００はＩ／Ｏバス制御装置である。６０１，６０２はＩ／Ｏバス制御装置６００に接続されるＩ／Ｏバスである。
【００４７】
上記キャッシュフラッシュ装置１００は、プロセッサバス１０とメインメモリ制御装置５００（メインメモリ５０１）との間にインラインで接続されている。このため、この構成例は、メインメモリのために使用可能なアドレス空間に制限が発生せず、アダプタ接続方式で実現しやすいという利点がある。
【００４８】
本実施形態では、プロセッサ１１０，１２０が“ＭＥＳＩ”プロトコルでキャッシュ管理を行っている場合を例にとって説明する。ここで、“ＭＥＳＩ”は、キャッシュメモリ１１１，１２１上の各キャッシュブロックの取り得る４種類の状態、すなわち、以下に説明するような“Modified”，“Exclusive ”，“Shared”，“Invalid ”の各種の状態を示すものである。なお、以下では、それぞれの頭文字を用いて単に“Ｍ”，“Ｅ”，“Ｓ”，“Ｉ”と呼ぶ場合があるものとする。
【００４９】
Modified（Ｍ）：  そのキャッシュブロックには更新されたデータが存在する。他のプロセッサのキャッシュブロックには、このデータは存在しない。
Exclusive （Ｅ）：  そのキャッシュブロックには、メインメモリ５０１と同一内容のデータが存在する。他のキャッシュメモリのキャッシュブロックには、このデータは存在しない。
Shared（Ｓ）：  そのキャッシュブロックには、メインメモリ５０１と同一内容のデータが存在する。他のプロセッサのキャッシュブロックにも、このデータが存在する可能性がある。
Invalid （Ｉ）：  そのキャッシュブロックには有効なデータが存在しない。
【００５０】
なお、上記の状態“Exclusive （Ｅ）”および“Shared（Ｓ）”は、“Clean （Ｃ）”に相当するものである。
【００５１】
一方、本システムのプロセッサバス１０上に発行される各種のトランザクションには、以下に説明するように“Read and Invalidate ”，“Invalidate”，“Write ”，“Read”などがある。
【００５２】
Read and Invalidate ：  プロセッサがデータを更新しようとして、キャッシュメモリ中にそのデータが無い場合に発行されるものであり、キャッシュブロックデータのリード、および他のキャッシュブロックの無効化要求を意味する。
【００５３】
Invalidate：  プロセッサが“Shared”状態のキャッシュブロックのデータを更新しようとする場合に発行されるものであり、他のキャッシュメモリのデータ無効化要求を意味する。
【００５４】
Write ：  “Modified”状態のキャッシュブロックに他のアドレスのデータを格納しなければならなくなったために、“Modified”状態のキャッシュブロックの内容をメインメモリ５０１に書き戻す必要がある場合に発行されるものであり、キャッシュブロックデータのメインメモリ５０１への書込み要求を意味する。
【００５５】
Read：  プロセッサがデータを読もうとして、キャッシュメモリ中にそのデータが無い場合に発行されるものであり、キャッシュブロックデータのリード要求を意味する。
【００５６】
次に、この第１実施形態の動作について説明する。
【００５７】
（通常動作）
はじめに通常動作を説明する。
通常動作時には、プロセッサバス１０上に発行されたトランザクションをキャッシュフラッシュ装置１００が受け取り、必要なトランザクションをシステムバス１上に発行する。このとき、メインメモリ制御装置５００またはＩ／Ｏバスブリッジ６００がシステムバス１上のアドレスによって反応する。
【００５８】
このように、プロセッサバス１０上ではキャッシュフラッシュ装置１００を通じてメモリアクセスもしくはＩ／Ｏアクセスを行うので、プロセッサの内部レジスタ等の特殊な空間を除けばキャッシュフラッシュ装置１００がトランザクションのターゲットアドレスを保持し、キャッシュフラッシュ装置１００がトランザクションへのレスポンスを返す責任を持つ。
【００５９】
ここで、プロセッサバス１０上に各種のトランザクションが発行された場合のキャッシュフラッシュ装置１００が行う処理を、図２〜図４を参照して説明する。
【００６０】
キャッシュメモリ１１１，１２１に“Exclusive ”状態が発生したときには、キャッシュが“Modified”状態になったことを外部から観測できない。このため、プロセッサバス１０上にReadトランザクションが発行された場合には（ステップＡ１）、キャッシュフラッシュ装置１００は“Shared”応答をプロセッサバス１０上に返し、キャッシュを“Shared”状態にする（ステップＡ２）。すなわち、“Exclusive ”状態を許さない。そして、キャッシュフラッシュ装置１００は、キャッシュ管理用メモリ１０１を検索して該当するキャッシュラインを“Clean ”にする（ステップＡ３）。
【００６１】
プロセッサバス１０上にInvalidateトランザクション又はRead and Invalidate トランザクションが発行された場合には（ステップＢ１）、キャッシュフラッシュ装置１００はキャッシュ管理用メモリ１０１中の“Modified”として該当するインデックスの位置にタグを保存する（ステップＢ２）。このとき、既に別のキャッシュラインがModifiedとして登録されていたら、キャッシュフラッシュ装置１００は登録されていたタグとインデックスとから物理アドレスを生成してプロセッサバス１０上にReadトランザクションを発行する（ステップＢ３，Ｂ４）。プロセッサが“Modified”ラインを持っていれば、該プロセッサは“Modified”応答をして“Modified”データをプロセッサバス１０上に出力してくる。
【００６２】
キャッシュフラッシュ装置１００は、プロセッサバス１０から“Modified”データを受け取ると（ステップＢ５）、システムバス１上にそのアドレスのWrite トランザクションを発行する（ステップＢ６）。これにより、メインメモリ制御装置５００は、メインメモリ５０１にデータを書き戻す。
【００６３】
プロセッサバス１０上にWrite トランザクションが発行された場合には（ステップＣ１）、キャッシュフラッシュ装置１００はシステムバス１上にWrite トランザクションを発行する（ステップＣ２）。これにより、メインメモリ制御装置５００は、メインメモリ５０１にデータを書き込む。そして、キャッシュフラッシュ装置１００は、キャッシュ管理用メモリ１０１を検索して該当するキャッシュラインを“Clean ”にする（ステップＣ３）。
【００６４】
図５は、プロセッサバス上に発行されたトランザクションの種類に応じてキャッシュ管理用メモリ１０１の状態が変更される様子をまとめたものである。
【００６５】
図中、“Ｍ”は、キャッシュ管理用メモリ１０１が「プロセッサが“Modified”ラインを持っている」と認識している状態を示す。“Ｃ”は、キャッシュ管理用メモリ１０１が「プロセッサが“Modified”ラインを持っていない」と認識している状態“Clean ”を示す。このときのプロセッサキャッシュの状態は、“Invalid ”または“Shared”である。“Ｍ（追い出し）”は、キャッシュ管理用メモリ１０１が「プロセッサが“Modified”ラインを持っている」と認識し、かつキャッシュ管理用メモリ１０１に登録されていたエントリのリードをプロセッサバス上に発行してプロセッサキャッシュ内の“Modified”ラインを追い出すことを示す。
【００６６】
（キャッシュフラッシュ時の動作）
次に、キャッシュフラッシュ時の動作を、図６を参照して説明する。
キャッシュフラッシュが開始されると、キャッシュフラッシュ装置１００は、キャッシュ管理用メモリ１０１を検索してプロセッサ１１０，１２０にある“Modified”であるキャッシュラインを見つけ（ステップＤ１）、プロセッサバス１０だけに対してリード要求を行う（ステップＤ２）。なお、リード要求の発行にあたっては、“０バイト”すなわち“Modified”応答が無ければデータ転送を伴わない形でトランザクションが完了するようにする。
【００６７】
ここで、プロセッサ１１０もしくは１２０が本当に“Modified”であるデータを持っていれば、該プロセッサはReadトランザクションに対して“Modified”応答をして“Modified”データをプロセッサバス１０上に出力してくる。
【００６８】
キャッシュフラッシュ装置１００は、プロセッサバス１０から“Modified”データを受け取ると（ステップＤ３）、システムバス１上にそのキャッシュラインのバーストライトトランザクションを発行し（ステップＤ４）、キャッシュフラッシュを完了する。
【００６９】
この場合、メインメモリ制御装置５００側としては、キャッシュフラッシュ装置１００からのキャッシュフラッシュを単純なバーストライトとして扱えるので、メインメモリ５０１へのアクセスは１回だけで終了する。
【００７０】
図７は、この第１実施形態においてキャッシュフラッシュが単独で実行される場合の動作を示すタイミングチャートである。ここでは、メインメモリ５０１にシンクロナスＤＲＡＭを使用している。
【００７１】
以下、図７を参照して各種信号について説明する。なお、図中の横軸はバスサイクル数を示している。
【００７２】
プロセッサバスのaddress はプロセッサバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。プロセッサバスのSnoop は、システムトランザクションに対するスヌープ応答であり、プロセッサ１１０，１２０のいずれかが出力する。この図の例では、“Modified”応答を出している。プロセッサバスのDataは、システムトランザクションに対するデータであり、プロセッサ１１０，１２０のいずれかが出力する。なお、Readトランザクションに対するスヌープ応答が“Modified”以外の場合、通常はキャッシュフラッシュ装置１００がデータを出力する。
【００７３】
キャッシュフラッシュ装置のData Buffer は、キャッシュフラッシュ装置１００内のデータバッファがプロセッサバス１０上のデータを受け取る様子を示している。
【００７４】
システムバスのaddress は、システムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。システムバスのSnoop は、システムバストランザクションに対するスヌープ応答であり、本構成の場合、通常はメインメモリ制御装置５００が“Normal”応答を返す。システムバスのDataは、システムバストランザクションに対するデータ出力であり、本構成の場合、プロセッサバス１０上でプロセッサ１１０もしくは１２０が出力したデータをキャッシュフラッシュ装置１００が出力する。
【００７５】
メインメモリのAddress は、メインメモリ制御装置５００が出力するメインメモリ５０１のアドレスである。メインメモリのＲＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＲＡＳ信号である。メインメモリのＣＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＣＡＳ信号である。メインメモリのＷＥは、メインメモリ制御装置５００が出力するメインメモリ５０１のＷＥ信号である。メインメモリのDataは、メインメモリ制御装置５００とメインメモリ５０１の間のデータ信号である。ＣＡＳが“Ｌ”のときにＷＥが“Ｌ”であればメインメモリ制御装置５００がライトデータを出力し、ＣＡＳが“Ｌ”のときにＷＥが“Ｈ”であればメインメモリ５０１がリードデータを出力する。
【００７６】
図８は、この第１実施形態においてキャッシュフラッシュが３連続で実行される場合の動作を示すタイミングチャートである。ここでは、メインメモリ５０１にシンクロナスＤＲＡＭを使用している。
【００７７】
以下、図８を参照して各種信号について説明する。なお、図中の横軸はバスサイクル数を示している。また、図中の==、--、++はそれぞれ一番目、二番目、三番目のバストランザクションに対応する。
【００７８】
プロセッサバスのaddress はプロセッサバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。プロセッサバスのSnoop は、システムトランザクションに対するスヌープ応答であり、プロセッサ１１０，１２０のいずれかが出力する。この図の例では、“Modified”応答をしている。プロセッサバスのDataは、システムトランザクションに対するデータであり、プロセッサ１１０，１２０のいずれかが出力する。なお、Readトランザクションに対するスヌープ応答が“Modified”以外の場合、通常はキャッシュフラッシュ装置１００がデータを出力する。
【００７９】
キャッシュフラッシュ装置のData Buffer は、キャッシュフラッシュ装置１００内のデータバッファがプロセッサバス１０上のデータを受け取る様子を示している。
【００８０】
システムバスのaddress は、システムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。システムバスのSnoop は、システムバストランザクションに対するスヌープ応答であり、本構成の場合、通常はメインメモリ制御装置５００が“Normal”応答を返す。システムバスのDataは、システムバストランザクションに対するデータ出力であり、本構成の場合、プロセッサバス１０上でプロセッサ１１０もしくは１２０が出力したデータをキャッシュフラッシュ装置１００が出力する。
【００８１】
メインメモリのAddress は、メインメモリ制御装置５００が出力するメインメモリ５０１のアドレスである。メインメモリのＲＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＲＡＳ信号である。メインメモリのＣＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＣＡＳ信号である。メインメモリのＷＥは、メインメモリ制御装置５００が出力するメインメモリ５０１のＷＥ信号である。メインメモリのDataは、メインメモリ制御装置５００とメインメモリ５０１の間のデータ信号である。ＣＡＳが“Ｌ”のときにＷＥが“Ｌ”であればメインメモリ制御装置５００がライトデータを出力し、ＣＡＳが“Ｌ”のときにＷＥが“Ｈ”であればメインメモリ５０１がリードデータを出力する。
【００８２】
本例とキャッシュフラッシュ時のスループット、キャッシュフラッシュ終了までの時間の比較結果を図１７に示す。キャッシュ全領域をフラッシュするのに要する時間はほぼスループットに比例するので、本例では従来例の１／３以下の時間でキャッシュフラッシュが終了する。
【００８３】
［第２実施形態］
次に、第２実施形態を説明する。
【００８４】
図９は、本発明の第２実施形態に係るキャッシュフラッシュ装置を含むコンピュータシステムの全体構成を示すブロック図である。
【００８５】
２はシステムバスのうち、後述するアドレスバスの最上位２ビット分を除いたものである。このシステムバス２は、メインメモリ制御装置５００と、Ｉ／Ｏ制御装置６００と、キャッシュフラッシュ装置１００と、プロセッサ１１０，１２０とを接続してデータの受け渡しを行う。なお、プロセッサバスに相当する部分はこのシステムバス２に含まれているものと考える。
【００８６】
３はアドレスバスの最上位２ビット分であり、プロセッサ１１０，１２０とキャッシュフラッシュ装置１００とを接続してアドレスの受け渡しを行う。４はアドレスバスの最上位２ビット分であり、メインメモリ制御装置５００とキャッシュフラッシュ装置１００とを接続してアドレスの受け渡しを行う。なお、バス３と４とは接続されておらず、各々は独立して設けられている。
【００８７】
１００は本発明に係るキャッシュフラッシュ装置であり、プロセッサ１１０，１２０のキャッシュ状態を監視してキャッシュ管理用メモリ１０１に記録し、キャッシュフラッシュが起動するとプロセッサからダーティーラインを読み出してメインメモリ制御装置５００に書き戻す。１０１はキャッシュ管理用メモリであり、プロセッサ１１０，１２０のキャッシュラインの状態を記録する。
【００８８】
１１０，１２０はプロセッサである。１１１，１２１はそれぞれプロセッサ１１０，１２０のキャッシュメモリ（コピーバック方式）である。
【００８９】
５００はメインメモリを制御するメインメモリ制御装置である。５０１はメインメモリである。
【００９０】
６００はＩ／Ｏバス制御装置である。６０１，６０２はＩ／Ｏバス制御装置６００に接続されるＩ／Ｏバスである。
【００９１】
この第２実施形態においても、プロセッサは“ＭＥＳＩ”プロトコルでキャッシュ管理を行っているものとする。
【００９２】
図１０は、図９で示したシステムの通常動作時のアドレス出力を模式的に図示したものである。
【００９３】
プロセッサ１１０，１２０からアドレスを出力するとき、アドレスバスの一部（最上位２ビット分）３に対してプロセッサ１１０，１２０は“００”を出力する。このとき、キャッシュフラッシュ装置１００はアドレスバスの一部（最上位２ビット分）４に対して“００”を出力する。よって、メインメモリ制御装置５００にはプロセッサ１１０が出力したアドレスがそのまま観測される。
【００９４】
図１１は、図９で示したシステムのキャッシュフラッシュ前半のアドレス出力を模式的に図示したものである。
【００９５】
キャッシュフラッシュ装置１００からプロセッサにキャッシュフラッシュ要求（リード要求）をするとき、キャッシュフラッシュ装置１００はアドレスバスの一部３に対して“００”を出力する。プロセッサ１１０が“Modified”データを持っていれば、該プロセッサ１１０は“Modified”応答をして“Modified”データを出力してくる。
【００９６】
キャッシュフラッシュ装置１００は、“Modified”データを受け取ると、アドレスバスの一部４に対して“１１”を出力する。よって、メインメモリ制御装置５００はプロセッサ１１０，１２０が観測するのとは異なるアドレスを観測する。このアドレス領域はメインメモリ５０１やＩ／Ｏバス６１０，６２０には割り当てられていないのでプロセッサ１１０，１２０以外は反応しない。プロセッサ１１０が出力したデータはキャッシュフラッシュ装置１００が受け取る。
【００９７】
図１２は、図９で示したシステムのキャッシュフラッシュ後半のアドレス出力を模式的に図示したものである。
【００９８】
キャッシュフラッシュ装置１００からメインメモリ制御装置５００にライト要求をするとき、キャッシュフラッシュ装置１００はアドレスバスの一部３に対して“００”を出力する。このとき、キャッシュフラッシュ装置１００はアドレスバスの一部４に対して“００”を出力する。よって、メインメモリ制御装置５００はプロセッサ１１０，１２０が観測するのと同じアドレスを観測する。プロセッサは、図１１で示したキャッシュフラッシュ前半に“Modified”データを出力しているので、今度は“Modified”応答しない。
【００９９】
キャッシュフラッシュ装置１００が出力したライトデータは、そのままメインメモリ制御装置５００を通じてメインメモリ５０１に書き込まれる。
【０１００】
なお、上記の例では、アドレスビット“００”，“１１”は、偶数ビット数で構成することにより、パリティ保護されたアドレスバスに対応させている。しかし、パリティ保護されていないアドレスバスに対しては、アドレスビットを単純に“０”，“１”（１ビット分）としても構わない。
【０１０１】
次に、この第２実施形態の動作について説明する。
【０１０２】
（通常動作）
はじめに通常動作を説明する。
通常動作時には、キャッシュフラッシュ装置１００は、プロセッサに接続されたアドレスバスの一部（最上位２ビット分）３およびメインメモリ制御装置５００に接続されたアドレスバスの一部（最上位２ビット分）４の両方に“００”を出力する。これにより、プロセッサから出力されたトランザクションは、メインメモリ制御装置５００やＩ／Ｏブリッジ６００でも同じアドレスとして観測される。このとき、アドレスバス上のアドレスによってメインメモリ制御装置５００またはＩ／Ｏバスブリッジ６００が反応する。
【０１０３】
ここで、システムバス２上に各種のトランザクションが発行された場合のキャッシュフラッシュ装置１００が行う処理を、図１３〜図１５を参照して説明する。
【０１０４】
キャッシュメモリ１１１，１２１に“Exclusive ”状態が発生したときにはキャッシュが“Modified”状態になったことを外部から観測できない。このため、システムバス２上にReadトランザクションが発行された場合には（ステップＥ１）、キャッシュフラッシュ装置１００は“Shared”応答をシステムバス２上に返し、キャッシュを“Shared”状態にする（ステップＥ２）。すなわち、“Exclusive ”状態を許さない。キャッシュフラッシュ装置１００は、キャッシュ管理用メモリ１０１を検索し、該当するキャッシュラインを“Clean ”にする（ステップＥ３）。
【０１０５】
システムバス２上にInvalidateトランザクション又はRead and Invalidate トランザクションが発行された場合には（ステップＦ１）、キャッシュフラッシュ装置１００はキャッシュ管理用メモリ１０１中の“Modified”として該当するインデックスの位置にタグを保存する（ステップＦ２）。
【０１０６】
このとき、既に別のキャッシュラインがModifiedとして登録されていたら、キャッシュフラッシュ装置１００はプロセッサに接続されたアドレスバスの一部３には“００”を出力し、メインメモリ制御装置５００に接続されたアドレスバスの一部４には“１１”を出力し、登録されていたタグとインデックスとから物理アドレスを生成してシステムバス２上に発行する（ステップＦ３，Ｆ４）。プロセッサが“Modified”ラインを持っていれば、該プロセッサは“Modified”応答をして“Modified”データを出力してくる。
【０１０７】
キャッシュフラッシュ装置１００は、システムバス２から“Modified”データを受け取ると（ステップＦ５）、システムバス２上にそのアドレスのWrite トランザクションを発行する（ステップＦ６）。これにより、メインメモリ制御装置５００は、メインメモリ５０１にデータを書き戻す。
【０１０８】
なお、このようなキャッシュラインの追い出し時は、後述するキャッシュフラッシュ時と同じように動作するので、メインメモリ制御装置５００はプロセッサ１１０，１２０からのキャッシュフラッシュ動作には反応せず、キャッシュフラッシュ装置１００からのライト動作のみに反応する。
【０１０９】
システムバス２上にWrite トランザクションを発行したならば（ステップＧ１）、メインメモリ制御装置５００はシステムバス２上にWrite トランザクションを発行する（ステップＧ２）。これにより、メインメモリ制御装置５００は、メインメモリ５０１にデータを書き込む。そして、キャッシュフラッシュ装置１００は、キャッシュ管理用メモリ１０１を検索して該当するキャッシュラインを“Clean ”にする（ステップＧ３）。
【０１１０】
（キャッシュフラッシュ時の動作）
次に、キャッシュフラッシュ時の動作を、図１６を参照して説明する。
キャッシュフラッシュが開始されると、キャッシュフラッシュ装置１００はキャッシュ管理用メモリ１０１を検索してプロセッサ１１０，１２０にある“Modified”であるキャッシュラインを見つけ（ステップＨ１）、システムバス２にリード要求を行う（ステップＨ２）。
【０１１１】
このときプロセッサに接続されたアドレスバスの一部（最上位２ビット分）３には“００”を、メインメモリ制御装置５００に接続されたアドレスバスの一部（最上位２ビット分）４には“１１”を出力する。これにより、プロセッサ１１０，１２０およびＩ／Ｏバスブリッジ６００にはこのキャッシュフラッシュ用のReadトランザクションは観測されるが、メインメモリ制御装置５００には関係の無いアドレス空間に対するアクセスとして観測される。なお、リード要求の発行にあたっては、“０バイト”すなわち“Modified”応答が無ければデータ転送を伴わない形でトランザクションが完了するようにする。
【０１１２】
ここで、プロセッサ１１０もしくは１２０が本当に“Modified”であるデータを持っていれば、該プロセッサはReadトランザクションに対して“Modified”応答をして“Modified”データをシステムバス２に出力してくる。
【０１１３】
キャッシュフラッシュ装置１００は、システムバス２から“Modified”データを受け取ると（ステップＨ３）、システムバス２上にそのキャッシュラインのバーストライトトランザクションを発行する（ステップＨ４）。
【０１１４】
このとき、キャッシュフラッシュ装置１００は、アドレスバスの一部３，４を共に“００”にし、プロセッサ１１０，１２０とＩ／Ｏブリッジ６００およびメインメモリ制御装置５００の両方に普通のアドレス空間として見えるようにする。
【０１１５】
なお、プロセッサ１１０，１２０は、該当するキャッシュラインをすでに書き戻しているので、今度は“Shared”応答を返し、プロセッサからのデータ転送は発生しない。このとき、メインメモリ制御装置５００はキャッシュフラッシュ装置１００からのキャッシュフラッシュを単純なバーストライトとして扱えるので、メインメモリ５０１へのアクセスは１回だけで終了する。
【０１１６】
図１８は、この第２実施形態においてキャッシュフラッシュが単独で実行される場合の動作を示すタイミングチャートである。ここでは、メインメモリ５０１にシンクロナスＤＲＡＭを使用している。
【０１１７】
以下、図１８を参照して各種信号について説明する。なお、図中の横軸はバスサイクル数を示している。
【０１１８】
システムバスのAddress[33:5] はシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。システムバスのAddress[35:34] to Processor はシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００とプロセッサ１１０，１２０との間で使用される。システムバスのAddress[35:34] to Memoryはシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００とメモリ制御装置５００との間で使用される。システムバスのSnoop は、システムトランザクションに対するスヌープ応答であり、プロセッサ１１０，１２０のいずれかが出力する。この図の例では、１個目のReadトランザクションに対して“Modified”応答を、２個目のWrite トランザクションに対して“Shared”応答をしている。システムバスのDataは、システムトランザクションに対するデータであり、この図の１個目のトランザクションであるリードの場合はプロセッサ１１０，１２０のいずれかが出力する。なお、Readトランザクションに対するスヌープ応答が“Modified”以外の場合、通常はメインメモリ制御装置５００がデータを出力する。この図の２個目のトランザクションであるライトに対しては、キャッシュフラッシュ装置１００がデータを出力する。
【０１１９】
メインメモリのAddress は、メインメモリ制御装置５００が出力するメインメモリ５０１のアドレスである。システムバスのＲＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＲＡＳ信号である。メインメモリのＣＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＣＡＳ信号である。メインメモリのＷＥは、メインメモリ制御装置５００が出力するメインメモリ５０１のＷＥ信号である。メインメモリのDataは、メインメモリ制御装置５００とメインメモリ５０１の間のデータ信号である。ＣＡＳが“Ｌ”のときにＷＥが“Ｌ”であればメインメモリ制御装置５００がライトデータを出力し、ＣＡＳが“Ｌ”のときにＷＥが“Ｈ”であればメインメモリ５０１がリードデータを出力する。本図では、メインメモリ制御装置５００にはWrite トランザクションしか自装置のアドレスとして見えていないので、ライト動作のみを行う。
【０１２０】
図１９は、この第２実施形態においてキャッシュフラッシュが３連続で実行される場合の動作を示すタイミングチャートである。ここでは、メインメモリ５０１にシンクロナスＤＲＡＭを使用している。
【０１２１】
以下、図１９を参照して各種信号について説明する。なお、図中の横軸はバスサイクル数を示している。また、図中の==、--、++はそれぞれ一番目、二番目、三番目のバストランザクションに対応する。
【０１２２】
システムバスのAddress[33:5] はシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００が出力する。システムバスのAddress[35:34] to Processor はシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００とプロセッサ１１０，１２０に接続されている。システムバスのAddress[35:34] to Memoryはシステムバストランザクションのアドレスであり、キャッシュフラッシュ装置１００とメモリ制御装置５００に接続されている。システムバスのSnoop は、システムトランザクションに対するスヌープ応答であり、プロセッサ１１０，１２０のいずれかが出力する。この図の例では、１〜３個目のReadトランザクションに対して“Modified”応答を、４〜６個目のWrite トランザクションに対して“Shared”応答をしている。システムバスのDataは、システムトランザクションに対するデータであり、この図の１〜３個目のトランザクションであるリードの場合プロセッサ１１０，１２０のいずれかが出力する。なお、Readトランザクションに対するスヌープ応答が“Modified”以外の場合、通常はメインメモリ制御装置５００がデータを出力する。この図の４〜６個目のトランザクションであるライトに対してはキャッシュフラッシュ装置１００がデータを出力する。
【０１２３】
メインメモリのAddress は、メインメモリ制御装置５００が出力するメインメモリ５０１のアドレスである。メインメモリのＲＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＲＡＳ信号である。メインメモリのＣＡＳは、メインメモリ制御装置５００が出力するメインメモリ５０１のＣＡＳ信号である。メインメモリのＷＥは、メインメモリ制御装置５００が出力するメインメモリ５０１のＷＥ信号である。メインメモリのDataは、メインメモリ制御装置５００とメインメモリ５０１の間のデータ信号である。ＣＡＳが“Ｌ”のときにＷＥが“Ｌ”であればメインメモリ制御装置５００がライトデータを出力し、ＣＡＳが“Ｌ”のときにＷＥが“Ｈ”であればメインメモリ５０１がリードデータを出力する。本図では、メインメモリ制御装置５００にはWrite トランザクションしか自装置のアドレスとして見えていないのでライト動作のみを行う。
【０１２４】
本例とキャッシュフラッシュ時のスループット、キャッシュフラッシュ終了までの時間の比較結果を図１７に示す。キャッシュ全領域をフラッシュするのに要する時間はほぼスループットに比例するので、本例では従来例の約９／１３の時間でキャッシュフラッシュが終了するので、約３０％の高速化を実現する。
【０１２５】
なお、キャッシュ全領域のキャッシュフラッシュ時間はほぼキャッシュフラッシュ時のスループットに比例する。よって、従来方法に比べ、第１実施形態の方法で約２２５％、第２実施形態の方法で約４４％の性能向上を実現できる。
【０１２６】
［第３実施形態］
次に、第３実施形態を説明する。
図２０は、本発明の第３実施形態に係るキャッシュフラッシュ装置を含むコンピュータシステムの全体構成を示すブロック図である。
【０１２７】
この第３実施形態では、プロセッサ１１０，１２０がＭＥＳＩプロトコルによる２階層のキャッシュメモリを持つ。
【０１２８】
図２０において、１１１，１２１は第２階層キャッシュ（以下Ｌ２キャッシュと略記する）であり、キャッシュフラッシュ装置１００に接続されたメモリ１０１’は第３階層キャッシュ（以下Ｌ３キャッシュと略記する）である。すなわち、第１実施形態（図１）ではアドレス情報を記憶する管理用メモリ１０１を使用したのに対し、この第３実施形態ではその代わりにアドレス情報のみならず実際のデータをも記憶するキャッシュメモリ（Ｌ３キャッシュ）１０１’を使用している。すなわち、キャッシュフラッシュ装置１００にデータメモリを備えることにより外部キャッシュとしての機能を持たせるようにしている。
【０１２９】
Ｌ２キャッシュ１１１，１２１に“Exclusive ”状態が発生したときには、キャッシュデータの更新が外部から観測できないので、キャッシュフラッシュ装置１００は第１実施形態と同様にプロセッサ１１０，１２０からのReadトランザクションに対しては“Shared”応答を返して“Exclusive ”状態を許さないことにする。
【０１３０】
ここで、Ｌ３キャッシュ１０１’もＭＥＳＩ方法で管理するが、Ｌ３キャッシュ１０１’の“Modified”状態にはＬ３キャッシュ１０１’に記録されたデータが有効（valid ）の場合と、Ｌ３キャッシュ１０１’のデータは無効で有効データはプロセッサのＬ２キャッシュ１１１，１２１にある場合、の２種類がある。
【０１３１】
以下では、Ｌ３キャッシュ１０１’が“Modified”でデータが有効な場合（即ち、キャッシュフラッシュ装置１００事体が最新のデータを持っている状態）を“Owned （Ｏ）”状態と呼び、Ｌ３キャッシュ１０１’が“Modified”でデータが有効でない場合（即ち、Ｌ２キャッシュ１１１，１２１に最新のデータがある状態）を“Dirty （Ｄ）”状態と呼ぶこととし、このキャッシュ管理方法を“ＤＯＳＩ”プロトコルと呼ぶことにする。
【０１３２】
Ｌ２キャッシュ１１１，１２１が“Modified（Ｍ）”，“Shared（Ｓ）”，“Invalid （Ｉ）”の各状態のときＬ３キャッシュ１０１’は図２１に示す状態をとる。ここで、Ｌ２キャッシュ１１１，１２１のいずれかが“Invalid ”状態のときＬ３キャッシュ１０１’が“Dirty ”という状態をとっていれば、もう一方のＬ２キャッシュは“Modified”状態になっている。
【０１３３】
また、このキャッシュシステムはキャッシュフラッシュを目的としたものなので、Ｌ２キャッシュ１１１，１２１がＬ３キャッシュ１０１’のサブセットである必要はない。すなわち、Ｌ２キャッシュ１１１，１２１が“Shared”の時にＬ３キャッシュ１０１’が“Invalid ”であることも許される。
【０１３４】
次に、この第３実施形態の動作について説明する。
【０１３５】
（通常動作）
はじめに通常動作について説明する。
まず、プロセッサバス１０上に各種のトランザクションが発行された場合のキャッシュフラッシュ装置１００が行う処理を、図２２〜図２５を参照して説明する。
【０１３６】
プロセッサバス１０上にReadトランザクションが発行された場合には（ステップＪ１）、キャッシュフラッシュ装置１００は“Shared”応答を返し、プロセッサキャッシュに“Exclusive ”状態が発生するのを防止する（ステップＪ２）。
【０１３７】
Ｌ３キャッシュ１０１’の該当するインデックスに何も登録されていなければ、新しいトランザクションを“Shared”として登録し（ステップＪ３，Ｊ４）、システムバス１上にReadトランザクションを発行してメインメモリ５０１からデータを読み出す（ステップＪ５）。“Shared”が登録されていれば、新しいトランザクションを“Shared”として登録し（ステップＪ３，Ｊ６）、アドレスマッチしていれば、古いデータを捨て（ステップＪ７，Ｊ８）、システムバス１上にReadトランザクションを発行してメインメモリ５０１からデータを読み出す（ステップＪ５）。
【０１３８】
ステップＪ７でアドレスマッチしていなければ、Ｌ３キャッシュ１０１’内のデータをプロセッサバス１０に出力する（ステップＪ９）。この場合、システムバス１上にはReadトランザクションを発行しない（ステップＪ１０）。
【０１３９】
これ以外の場合、すなわちそのキャッシュラインをＬ３キャッシュ１０１’が持っていない場合、もしくはシステムバス１上にすぐにReadトランザクションを発行できる場合には、システムバス１上にReadトランザクションを発行してメインメモリ５０１からデータを読み出す。なお、Ｌ３キャッシュ１０１’がそのキャッシュラインを既に持っていれば、Ｌ３キャッシュ１０１’のデータをリードデータとしてプロセッサバス１０に出力し、メインメモリ５０１から読みだしたデータを捨てる。
【０１４０】
一方、Ｌ３キャッシュ１０１’の該当するインデックスに“Dirty ”もしくは“Owned ”として登録されていれば、新しいトランザクションの内容をＬ３キャッシュ１０１’には登録しない。リードトランザクションのアドレスがＬ３キャッシュ１０１’のアドレスと一致していなければ、システムバス１上にはReadトランザクションを発行する。なお、メインメモリ５０１からリードデータが返るとプロセッサバス１にデータを転送することになる。リードトランザクションのアドレスがＬ３キャッシュ１０１’のアドレスと一致していれば、Ｌ３キャッシュ１０１’のデータをプロセッサバス１０に返す。また、Ｌ３キャッシュ１０１’は“Owned ”にする。なお、Ｌ３キャッシュ１０１’が“Dirty ”の場合、プロセッサバス１上でImplicit Write Back が発生するので、Ｌ３キャッシュ１０１’はデータを出力しない。
【０１４１】
すなわち、Ｌ３キャッシュ１０１’の該当するインデックスに“Dirty ”として登録されている場合、アドレスマッチしているかどうかを調べる（ステップＪ３，Ｊ１１）。アドレスマッチしていれば、Ｌ３キャッシュ１０１’を“Owned ”に変更し、Implicit Write Back データをＬ３キャッシュ１０１’に書き込む（ステップＪ１１，Ｊ１２）。この場合、システムバス１上にはReadトランザクションを発行しない（ステップＪ１０）。ステップＪ１１でアドレスマッチしていなければ、システムバス１上にReadトランザクションを発行してメインメモリ５０１からデータを読み出す（ステップＪ１４）。
【０１４２】
Ｌ３キャッシュ１０１’の該当するインデックスに“Owned ”として登録されている場合、アドレスマッチしているかどうかを調べる（ステップＪ３，Ｊ１３）。アドレスマッチしていれば、Ｌ３キャッシュ１０１’内のデータをプロセッサバス１０に出力する（ステップＪ９）。この場合、システムバス１上にはReadトランザクションを発行しない（ステップＪ１０）。ステップＪ１３でアドレスマッチしていなければ、システムバス１上にReadトランザクションを発行してメインメモリ５０１からデータを読み出す（ステップＪ１４）。
【０１４３】
プロセッサバス１０上にRead and Invalidate トランザクションが発行された場合には（ステップＫ１）、キャッシュフラッシュ装置１００はＬ３キャッシュ１０１’中の該当するキャッシュラインを“Dirty ”として登録し（ステップＫ２）、システムバス１上にRead and Invalidate トランザクションを発行する（ステップＫ３）。このとき、Ｌ３キャッシュ１０１’にすでに他のキャッシュラインが“Dirty ”もしくは“Owned ”として登録されていたら、そのキャッシュラインをフラッシュする（ステップＫ４，Ｋ５）。このフラッシュ動作は後述のキャッシュフラッシュ時の動作と同じなのでここでは省略する。
【０１４４】
なお、システムバス１からリードデータが戻るとこのデータをプロセッサバス１０に転送することなる。Ｌ３キャッシュ１０１’にはデータは登録しなくてよい。また、プロセッサバス１０上でのもともとのRead and Invalidate トランザクションに対してもう一方のプロセッサが“Modified”応答をすると、キャッシュフラッシュ装置１００は、システムバス１から戻ってきたデータを捨てる。
【０１４５】
プロセッサバス１０上にInvalidateトランザクションが発行された場合には（ステップＬ１）、キャッシュフラッシュ装置１００はＬ３キャッシュ１０１’中の該当するキャッシュラインを“Dirty ”として登録し（ステップＬ２）、システムバス１上にInvalidateトランザクションを発行する（ステップＬ３）。このとき、Ｌ３キャッシュ１０１’に既に他のキャッシュラインが“Dirty ”もしくは“Owned ”として登録されていたら、そのキャッシュラインをフラッシュする（ステップＬ４，Ｌ５）。このフラッシュ動作は後述のキャッシュフラッシュ時の動作と同じなのでここでは省略する。
【０１４６】
プロセッサバス１０上にWrite トランザクションが発行された場合には（ステップＭ１）、キャッシュフラッシュ装置１００はライトデータの転送終了するのを待ち（ステップＭ２）、Ｌ３キャッシュ１０１’にデータを書き込み（ステップＭ３）、キャッシュ状態を“Owned ”にする（ステップＭ４）。なお、システムバス１上にはトランザクションを発行しない。
【０１４７】
次に、システムバス１上に各種のトランザクションが発行された場合のキャッシュフラッシュ装置１００が行う処理について説明する。
【０１４８】
システムバス１からのアクセスに対しては、キャッシュフラッシュ装置１００はＬ３キャッシュ１０１’を検索して“Dirty ”もしくは“Owned ”の場合に“Modified”応答をしてキャッシュ内容をシステムバス１に出力する。
【０１４９】
システムバス１上のトランザクションがReadの場合、Ｌ３キャッシュ１０１’が“Owned ”ならば、プロセッサバス１０上にはトランザクションを発行せずにシステムバス１００にＬ３キャッシュ１０１’内のデータを出力する。
【０１５０】
Ｌ３キャッシュ１０１’が“Dirty ”ならば、プロセッサバス１０上にReadトランザクションを発行し、プロセッサにデータを出力させる。なお、いずれの場合もＬ３キャッシュ１０１’のキャッシュステートを“Shared”にする。
【０１５１】
システムバス上のトランザクションがWrite の場合、Ｌ３キャッシュ１０１’が“Owned ”ならば、プロセッサバス１０上にInvalidateトランザクションを発行し、システムバス１００にＬ３キャッシュ１０１’内のデータを出力する。
【０１５２】
Ｌ３キャッシュ１０１’が“Dirty ”ならプロセッサバス１０上にRead and Invalidate トランザクションを発行し、プロセッサにデータを出力させる。なお、いずれの場合もＬ３キャッシュ１０１’のキャッシュステートを“Invalid ”にし、システムバス１には“Modified”応答を返す。
【０１５３】
Ｌ３キャッシュ１０１’が“Shared”の場合、プロセッサバス１０上にInvalidateトランザクションを発行し、Ｌ３キャッシュ１０１’の状態を“Invalidate”にし、システムバスには“Shared”応答を返す。
【０１５４】
Ｌ３キャッシュ１０１’に該当するキャッシュラインが登録されていない場合にも本実施形態のプロトコルではプロセッサが“Shared”でデータを持っている可能性があるので、プロセッサバス１０上にInvalidateトランザクションを発行し、システムバス１には“Shared”応答を返す。
【０１５５】
システムバス上のトランザクションがInvalidate又はRead and Invalidate の場合、Ｌ３キャッシュ１０１’が“Owned ”ならば、プロセッサバス１０上にInvalidateトランザクションを発行し、システムバス１００にＬ３キャッシュ１０１’内のデータを出力する。
【０１５６】
Ｌ３キャッシュ１０１’が“Dirty ”ならば、プロセッサバス１０上にRead and Invalidate トランザクションを発行し、プロセッサにデータを出力させる。なお、いずれの場合もＬ３キャッシュ１０１’のキャッシュステートを“Invalid ”にし、システムバス１には“Modified”応答を返す。
【０１５７】
Ｌ３キャッシュ１０１’が“Shared”の場合、プロセッサバス１０上にInvalidateトランザクションを発行し、Ｌ３キャッシュ１０１の状態を“Invalidate”にし、システムバスには“Shared”応答を返す。
【０１５８】
Ｌ３キャッシュ１０１’に該当するキャッシュラインが登録されていない場合にも本実施形態のプロトコルではプロセッサが“Shared”でデータを持っている可能性があるので、プロセッサバス１０上にInvalidateトランザクションを発行し、システムバス１には“Shared”応答を返す。
【０１５９】
以上見たように、キャッシュフラッシュ装置１００ではＬ３キャッシュ１０１’内でのキャッシュ置換が発生しない限り、システムバス上にはWrite トランザクションを発行しない。
【０１６０】
（キャッシュフラッシュ時の動作）
次に、キャッシュフラッシュ時の動作を、図２６を参照して説明する。
【０１６１】
キャッシュフラッシュ時には、キャッシュフラッシュ装置１００はＬ３キャッシュ１０１’を検索し、“Dirty ”状態と“Owned ”状態のものを見つけだす（ステップＮ１）。“Dirty ”状態のものは、Ｌ２キャッシュ１１１，１２１に最新のデータがあるので、プロセッサバス１０上にReadトランザクションを発行し、プロセッサに最新データを出力させる（ステップＮ２，Ｎ３）。
【０１６２】
キャッシュフラッシュ装置１００は、データを受け取ると（ステップＮ４）、システムバス１上にWrite トランザクションを発行し、そのデータをメインメモリ５０１に書き戻す（ステップＮ５）。
【０１６３】
一方、Ｌ３キャッシュ１０１’上で“Owned ”状態のものはキャッシュフラッシュ装置１００自体が最新データを持っているので、直ちにシステムバス１上にWrite トランザクションを発行し、そのデータをメインメモリ５０１に書き戻す（ステップＮ２，Ｎ６）。
【０１６４】
キャッシュフラッシュが完了するとＬ３キャッシュ１０１’に登録されたキャッシュ状態は“Shared”または“Invalid ”になる（ステップＮ７）。
【０１６５】
以上のように、キャッシュフラッシュ時にはメインメモリ５０１は単純なライト動作になるので、高速にキャッシュフラッシュを実行できる。
【０１６６】
なお、レジスタ設定により“Owned ”状態を許さないように動的に変更できるようにしてＬ３キャッシュ１０１’まで含めたキャッシュのダーティー率を低くするインプリメントを採れば、キャッシュフラッシュ時間をさらに短縮することができる。
【０１６７】
図２７はプロセッサ１１０および１２０から出力されたプロセッサバス１０上のトランザクションによるＬ３キャッシュ１０１の状態遷移を示したものである。
【０１６８】
図中、Ｄは“Dirty ”状態を示し、プロセッサ１１０または１２０がModifiedデータを持っていることを示す。Ｏは“Owned ”状態を示し、Ｌ３キャッシュ１０１がModifiedデータを持っていることを示す。Ｓは“Shared”状態を示し、Ｌ３キャッシュ１０１がメインメモリ５０１と同じデータを持っていることを示す。Ｉは“Invalid ”状態を示し、Ｌ３キャッシュ１０１の内容が有効でないことを示す。
【０１６９】
Ｒ＆Ｉは“Read and Invalidate ”トランザクションを示し、メインメモリ５０１からデータを読み込むと同時に他のバスエージェントが同じキャッシュラインを持っていればそのラインを無効化するトランザクションである。Ｉは“Invalidate”トランザクションを示し、他のバスエージェントが同じキャッシュラインを持っていればそのラインを無効化するトランザクションである。
【０１７０】
Write は“Burst Write ”トランザクションを示し、プロセッサ１１０，１２０がＬ２キャッシュ１１１，１２１に持っていた“Modified”ラインを書き戻すトランザクションである。Readは“Burst Read”トランザクションであり、プロセッサ１１０，１２０がＬ２キャッシュ１１１，１２１にデータを読み出すトランザクションである。
【０１７１】
図２８はシステムバス１上のトランザクションによるＬ３キャッシュ１０１の状態遷移を示したものである。
【０１７２】
図中、Ｄは“Dirty ”状態を示し、プロセッサ１１０または１２０がModifiedデータを持っていることを示す。Ｏは“Owned ”状態を示し、Ｌ３キャッシュ１０１がModifiedデータを持っていることを示す。Ｓは“Shared”状態を示し、Ｌ３キャッシュ１０１がメインメモリ５０１と同じデータを持っていることを示す。Ｉは“Invalid ”状態を示し、Ｌ３キャッシュ１０１の内容が有効でないことを示す。
【０１７３】
Ｒ＆Ｉは“Read and Invalidate ”トランザクションを示し、メインメモリ５０１からデータを読み込むと同時に他のバスエージェントが同じキャッシュラインを持っていればそのラインを無効化するトランザクションである。Ｉは“Invalidate”トランザクションを示し、他のバスエージェントが同じキャッシュラインを持っていればそのラインを無効化するトランザクションである。
【０１７４】
Write は“Burst Write ”トランザクションを示し、システムバス１からメインメモリ５０１にデータを書き込むトランザクションである。Readは“Burst Read”トランザクションであり、メインメモリ５０１からシステムバス１にデータを読み出すトランザクションである。
【０１７５】
図２９はキャッシュフラッシュ装置１００が出力するトランザクションによりプロセッサ１１０および１２０、もしくはＬ３キャッシュ１０１にある“Modified”データをメインメモリ５０１に書き戻す時のＬ３キャッシュ１０１の状態遷移を示したものである。
【０１７６】
図中、Ｄは“Dirty ”状態を示し、プロセッサ１１０または１２０がModifiedデータを持っていることを示す。Ｏは“Owned ”状態を示し、Ｌ３キャッシュ１０１がModifiedデータを持っていることを示す。Ｓは“Shared”状態を示し、Ｌ３キャッシュ１０１がメインメモリ５０１と同じデータを持っていることを示す。Ｉは“Invalid ”状態を示し、Ｌ３キャッシュ１０１の内容が有効でないことを示す。
【０１７７】
Write Backは、プロセッサバス１０上では“Burst Read”トランザクション、システムバス１上では“Burst Write ”トランザクションを示し、プロセッサ１１０，１２０が持っている“Modified”データをプロセッサバス１０に出力させ、キャッシュフラッシュ装置１００がシステムバス１０上にデータを出力するトランザクションを示す。
【０１７８】
本発明は、フラッシュ装置の実装位置を変えることで種々のコンピュータシステムに適用できる。例えば、本発明をＩ／Ｏバスとディスクキャッシュとからなるシステムに適用することも可能である。
【０１７９】
本発明は上述した各実施形態に限定されるものではなく、その要旨の範囲で種々変形して実施することが可能である。例えば、第３実施形態で採用したＬ３キャッシュを第２実施形態のシステムに適用することも可能である。
【０１８０】
【発明の効果】
以上詳述したように本発明によれば、モディファイドデータについてのリード要求を前記キャッシュフラッシュ装置からプロセッサバス（プロセッサ）だけに対して送り、このリード要求に応じて送られてきたプロセッサからのモディファイドデータをキャッシュフラッシュ装置により受け取り、モディファイドデータの受け取りが完了したキャッシュラインだけについてメインメモリに対するバーストライトを行うようにしている。これにより、キャッシュフラッシュ時に前記メインメモリがリードモディファイライト動作せずに単純にバーストライト動作するようになり、キャッシュフラッシュ時間を短縮することができる。特に、本発明をチェックポイントロールバック方式を採用したシステムに適用した場合には、上記の効果が顕著にあらわれる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係るキャッシュフラッシュ装置を含むコンピュータシステムの全体構成を示すブロック図。
【図２】本発明の第１実施形態における通常動作の一部を説明するためのフローチャート。
【図３】本発明の第１実施形態における通常動作の一部を説明するためのフローチャート。
【図４】同実施形態における通常動作の一部を説明するためのフローチャート。
【図５】同実施形態においてプロセッサバス上に発行されたトランザクションの種類に応じてキャッシュ管理用メモリの状態が変更される様子をまとめた図。
【図６】同実施形態におけるキャッシュフラッシュ時の動作を説明するためのフローチャート。
【図７】同実施形態においてキャッシュフラッシュが単独で実行される場合の動作を示すタイミングチャート。
【図８】同実施形態においてキャッシュフラッシュが３連続で実行される場合の動作を示すタイミングチャート。
【図９】本発明の第２実施形態に係るキャッシュフラッシュ装置を含むコンピュータシステムの全体構成を示すブロック図。
【図１０】同実施形態における通常動作時のアドレス出力を模式的に示す図。
【図１１】同実施形態におけるキャッシュフラッシュ前半のアドレス出力を模式的に示す図。
【図１２】同実施形態におけるキャッシュフラッシュ後半のアドレス出力を模式的に示す図。
【図１３】同実施形態における通常動作の一部を説明するためのフローチャート。
【図１４】同実施形態における通常動作の一部を説明するためのフローチャート。
【図１５】同実施形態における通常動作の一部を説明するためのフローチャート。
【図１６】同実施形態におけるキャッシュフラッシュ時の動作を説明するためのフローチャート。
【図１７】第１及び第２実施形態と従来技術との間でのキャッシュフラッシュ時のスループット、キャッシュフラッシュ終了までの時間の比較結果を示す図。
【図１８】第２実施形態においてキャッシュフラッシュが単独で実行される場合の動作を示すタイミングチャート。
【図１９】同実施形態においてキャッシュフラッシュが３連続で実行される場合の動作を示すタイミングチャート。
【図２０】本発明の第３実施形態に係るキャッシュフラッシュ装置を含むコンピュータシステムの全体構成を示すブロック図。
【図２１】同実施形態におけるプロセッサＬ２のキャッシュ状態とプロセッサＬ３のキャッシュ状態との関係を示す図。
【図２２】同実施形態における通常動作の一部を説明するためのフローチャート。
【図２３】同実施形態における通常動作の一部を説明するためのフローチャート。
【図２４】同実施形態における通常動作の一部を説明するためのフローチャート。
【図２５】同実施形態における通常動作の一部を説明するためのフローチャート。
【図２６】同実施形態におけるキャッシュフラッシュ時の動作を説明するためのフローチャート。
【図２７】同実施形態におけるプロセッサバス上のトランザクションによるＬ３キャッシュの状態遷移を示す図。
【図２８】同実施形態におけるシステムバス上のトランザクションによるＬ３キャッシュの状態遷移を示す図。
【図２９】同実施形態におけるキャッシュフラッシュ装置が出力するトランザクションによりプロセッサもしくはＬ３キャッシュにある“Modified”データをメインメモリに書き戻す時のＬ３キャッシュの状態遷移を示す図。
【図３０】従来のキャッシュフラッシュ装置を含むコンピュータシステムの構成を示すブロック図。
【図３１】従来のキャッシュフラッシュ装置によりキャッシュフラッシュが単独で実行される場合の動作を示すタイミングチャート。
【図３２】従来のキャッシュフラッシュ装置によりキャッシュフラッシュが３連続で実行される場合の動作を示すタイミングチャート。
【符号の説明】
１，２…システムバス、３，４…アドレスバスの一部、１０…プロセッサバス、１００…キャッシュフラッシュ装置、１０１…キャッシュ管理用メモリ、１１０，１２０…プロセッサ、１０１’，１１１，１２１…キャッシュメモリ、５００…メインメモリ制御装置、５０１…メインメモリ、６００…Ｉ／Ｏバス制御装置、６１０，６２０…Ｉ／Ｏバス。
【図１】
0004091171.tif 000002
【図２】
0004091171.tif 000003
【図３】
0004091171.tif 000004
【図４】
0004091171.tif 000005
【図５】
0004091171.tif 000006
【図６】
0004091171.tif 000007
【図７】
0004091171.tif 000008
【図８】
0004091171.tif 000009
【図９】
0004091171.tif 000010
【図１０】
0004091171.tif 000011
【図１１】
0004091171.tif 000012
【図１２】
0004091171.tif 000013
【図１３】
0004091171.tif 000014
【図１４】
0004091171.tif 000015
【図１５】
0004091171.tif 000016
【図１６】
0004091171.tif 000017
【図１７】
0004091171.tif 000018
【図１８】
0004091171.tif 000019
【図１９】
0004091171.tif 000020
【図２０】
0004091171.tif 000021
【図２１】
0004091171.tif 000022
【図２２】
0004091171.tif 000023
【図２３】
0004091171.tif 000024
【図２４】
0004091171.tif 000025
【図２５】
0004091171.tif 000026
【図２６】
0004091171.tif 000027
【図２７】
0004091171.tif 000028
【図２８】
0004091171.tif 000029
【図２９】
0004091171.tif 000030
【図３０】
0004091171.tif 000031
【図３１】
0004091171.tif 000032
【図３２】
0004091171.tif 000033