(57)【要約】 【目的】  ＣＰＵに負荷をかけずに使用頻度の低いデータを効率よく主メモリに書き戻すことが可能なことを課題とする。【構成】  ＣＰＵ１１と、該ＣＰＵ１１が使用するキャッシュメモリ１２と、主メモリ１３とを備え、前記キャッシュメモリ１２がライトバック方式により運用されるプロセッサシステムのキャッシュ制御装置において、キャッシュライン毎にデータのアクセス時間間隔に係る情報を管理するキャッシュ制御手段１３と、各ラインの前記アクセス時間間隔に係る情報を周期的にチェックすると共に、所定の時間間隔を超えてアクセスされなかったキャッシュラインのデータを主メモリ１５に書き戻す周期監視手段１４とを備える。【選択図】    図１
2005092311.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、該ＣＰＵが使用するキャッシュメモリと、主メモリとを備え、前記キャッシュメモリがライトバック方式により運用されるプロセッサシステムのキャッシュ制御装置において、
キャッシュライン毎にデータのアクセス時間間隔に係る情報を管理するキャッシュ制御手段と、
各ラインの前記アクセス時間間隔に係る情報を周期的にチェックすると共に、所定の時間間隔を超えてアクセスされなかったキャッシュラインのデータを主メモリに書き戻す周期監視手段とを備えることを特徴とするキャッシュ制御装置。
【請求項２】
複数のＣＰＵと、各ＣＰＵがそれぞれ使用する複数のキャッシュメモリと、システムに共通の主メモリとを備え、各キャッシュメモリがライトバック方式により運用されるマルチプロセッサシステムのキャッシュ制御装置において、
キャッシュライン毎にデータのアクセス時間間隔に係る情報を管理するキャッシュ制御手段と、
各ラインの前記アクセス時間間隔に係る情報を周期的にチェックし、所定の時間間隔を超えてアクセスされなかったキャッシュラインのデータを主メモリに書き戻すと共に、他のキャッシュメモリ内に存在する同一のラインを無効化する周期監視手段とを備えることを特徴とするキャッシュ制御装置。
【請求項３】
キャッシュ制御手段は、最初はキャッシュラインにデータをフィルした時点の時刻情報を該キャッシュラインに書き込むと共に、その後は該時刻情報を当該ラインのデータをアクセスした時点の時刻情報によって更新し、周期監視手段は、前回書き込まれた時刻情報と現時点の時刻情報との差分に基づきアクセス時間間隔に係る情報をチエックすることを特徴とする請求項１又は２記載のキャッシュ制御装置。
【請求項４】
キャッシュ制御手段は、キャッシュラインにデータをフィルした時点では所定の有効時間情報を保持すると共に、その後は当該ラインのデータをアクセスする度に前記有効時間情報に所定の時間情報を加算して更新し、周期監視手段は、各キャッシュラインの有効時間情を周期的に所定値づつ減少させると共に、該有効時間情報に基づきアクセス時間間隔に係る情報をチエックすることを特徴とする請求項１又は２記載のキャッシュ制御装置。
【請求項５】
周期監視手段は、所定時間間隔を超えてアクセスされなかったキャッシュラインの内、ダーティーとなっているラインのデータのみを主メモリに書き戻すことを特徴とする請求項１又は２記載のキャッシュ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はにキャッシュ制御装置関し、更に詳しくはキャッシュメモリがライトバック方式により運用されるプロセッサシステムのキャッシュ制御装置に関する。
【背景技術】
【０００２】
この種のプロセッサキャッシュ方式では、ソフトウェアの局所性を利用し、低速大容量の主メモリと高速小容量のキャッシュメモリとを組み合わせることで、ＣＰＵの処理性能を大幅に向上させている。ＣＰＵは基本的にはキャッシュメモリのみをアクセス（リード／ライト）の対象としており、主メモリとキャッシュ間のデータ転送は例えば各６４バイト分のキャッシュライン（cashe line）を単位として行われる。
【０００３】
ＣＰＵのリードデータがキャッシュメモリ上に存在しない（cashe miss）場合は、目的のデータを含むキャッシュラインを主メモリからキャッシュメモリに読み込む（cashe fill）。また、ライトバック（write back）型のキャッシュメモリでは、ＣＰＵからのライトデータがヒットした場合は、キャッシュデータのみを書き換え、主メモリデータは後に必要が生じた時にのみ書き換える。これにより、キャッシュデータと主メモリデータとの間には一時的に不一致（dirty）の状態が生じるが、これによって極めて高速な書き込み動作を可能としている。このダーティーラインは、キャッシュフィルのためにあるラインを廃棄するとき、又はＣＰＵ以外のバスマスタ（ＩＯデバイス等）がデータをアクセスしたとき、等に主メモリに書き戻され、当該キャッシュラインは無効化（invalidate）される。
【０００４】
一方、複数のＣＰＵと複数のキャッシュメモリとがシステム（ホスト）バスを介して主メモリを共用するマルチプロセッサシステムでは、複数のキャッシュメモリと共通の主メモリとの間でデータの一貫性（同一性）を保証するための一貫性保持動作が必要となる。これにはスヌープ方式とディレクトリ方式とが知られている。スヌープ方式では、各キャッシュメモリがシステムバス上に発行されるトランザクションを監視し、自キャッシュメモリ内に存在するコピーと同じアドレスの場合、一貫性保持動作を行う。ディレクトリ方式では、各キャッシュメモリ内に存在するコピーのアドレスをディレクトリで一元管理し、ＣＰＵからトランザクションが発行された場合、ディレクトリ内のキャッシング情報を元に一貫性を保証する。
【０００５】
このようなプロセッサキャッシュ方式を実現するハードウェアとしては、一般に、ＣＰＵからの高速アクセスを可能とするキャッシュメモリでは、ハードウェアで高速演算可能なパリティビットによるエラーチェックのみを行い、主メモリでは例えば１ビットエラーの訂正と２ビットエラーの検出が可能なＥＣＣコードを使用することで、ソフトエラー（放射線等の雑音による一時的、単発的なエラー）に対する信頼性を保つ方式が利用されている。このため、データは、キャッシュメモリに保存するよりも、主メモリに保存した方が信頼性が高いと言える。
【０００６】
従来は、この点に着目し、ＣＰＵのソフト制御の下で一定時間毎にキャッシュメモリの全域を主メモリへ書き戻すことでキャッシュメモリのソフトエラー率を低減させるものが知られている。
【０００７】
また従来は、上位装置（ＣＰＵ）１から外部記憶装置（ディスク装置）２への書込データを中間のディスクキャッシュメモリ３で一時的にバッファリングすることにより、ＣＰＵ１の書込オーバヘッド時間を短縮するキャッシュメモリ制御装置４であって、ＣＰＵ１
からの書込要求間隔が所定以上となった比較的軽負荷のタイミングを検出して、キャッシュメモリ３の未ディステージングデータをディスク装置２に効率よく吐き出すディスクキャッシュ方式が知られている（例えば特許文献１）。
【特許文献１】特開平６−３４８５９９号公報（要約，図）。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、上記ソフトウェアによる書き戻し処理では、ＣＰＵに一度に大きなオーバーヘッド（負荷）が発生する問題がある。また、キャッシュメモリ全域のデータを書き戻してしまうため、ＣＰＵが頻繁に使用するデータも書き戻されてしまい、キャッシュメモリを使用した効果を十分に発揮できない。
【０００９】
また、上記特許文献１の技術は、ＣＰＵからのアクセス（データ書込要求）の合間を見つけて、外部記憶装置に対する最終アクセスアドレスに最も近接する格納アドレスを有する未ディステージングデータをディスク装置にライトバックする技術を示すものに過ぎず、データの使用頻度に応じてライトバックするデータを決定するものでは無い。
【００１０】
本発明は上記従来技術の問題点に鑑みなされたもので、その目的とする所は、ＣＰＵに負荷をかけずに使用頻度の低いデータを効率よく主メモリに書き戻すことの可能なキャッシュ制御装置を提供することにある。
【課題を解決するための手段】
【００１１】
上記の課題は例えば図１の構成により解決される。即ち、本発明（１）のキャッシュ制御装置は、ＣＰＵ１１と、該ＣＰＵ１１が使用するキャッシュメモリ１２と、主メモリ１３とを備え、前記キャッシュメモリ１２がライトバック方式により運用されるプロセッサシステムのキャッシュ制御装置において、キャッシュライン毎にデータのアクセス時間間隔に係る情報を管理するキャッシュ制御手段１３と、各ラインの前記アクセス時間間隔に係る情報を周期的にチェックすると共に、所定の時間間隔を超えてアクセスされなかったキャッシュラインのデータを主メモリ１５に書き戻す周期監視手段１４とを備えるものである。
【００１２】
また上記の課題は例えば図８の構成により解決される。即ち、本発明（２）のキャッシュ制御装置は、複数のＣＰＵ１１，２１と、各ＣＰＵ１１，２１がそれぞれ使用する複数のキャッシュメモリ１２，２２と、システムに共通の主メモリ１５とを備え、各キャッシュメモリ１２，２２がライトバック方式により運用されるマルチプロセッサシステムのキャッシュ制御装置において、キャッシュライン毎にデータのアクセス時間間隔に係る情報を管理するキャッシュ制御手段１３／２３と、各ラインの前記アクセス時間間隔に係る情報を周期的にチェックし、所定の時間間隔を超えてアクセスされなかったキャッシュラインのデータを主メモリ１５に書き戻すと共に、他のキャッシュメモリ２２／２１内に存在する同一のラインを無効化する周期監視手段１４，２４とを備えるものである。
【００１３】
本発明（３）では、上記本発明（１）又は（２）におおいて、キャッシュ制御手段１４／２４は、最初はキャッシュライン１２／２２にデータをフィルした時点の時刻情報を該キャッシュラインに書き込むと共に、その後は該時刻情報を当該ラインのデータをアクセスした時点の時刻情報によって更新し、周期監視手段１４／２４は、前回保持された時刻情報と現時点の時刻情報との差分に基づきアクセス時間間隔に係る情報をチエックするものである。
【００１４】
本発明（４）では、上記本発明（１）又は（２）におおいて、キャッシュ制御手段１４
／２４は、キャッシュライン１２／２２にデータをフィルした時点では所定の有効時間情報を保持すると共に、その後は当該ラインのデータをアクセスする度に前記有効時間情報に所定の時間情報を加算して更新し、周期監視手段１４／２４は、各キャッシュライン１２／２２の有効時間情を周期的に所定値づつ減少させると共に、該有効時間情報に基づきアクセス時間間隔に係る情報をチエックするものである。
【００１５】
本発明（５）では、上記本発明（１）又は（２）におおいて、周期監視手段１４／２４は、所定時間間隔を超えてアクセスされなかったキャッシュラインの内、ダーティーとなっているラインのデータのみを主メモリに書き戻すものである。
【発明の効果】
【００１６】
使用頻度の低いデータは高速アクセスのメリットが少ないため、キャッシュメモリにあるよりも、主メモリに退避させておいた方が、データ保護の観点から好ましい。この点、本発明（１）によれば、使用頻度の低いデータを効率よく主メモリに書き戻すことで、プロセッサの処理能力に影響を与えることなく、ソフトエラーの発生によるシステムへの致命的な影響を大幅に低減できる。
【００１７】
本発明（２）によれば、プロセッサの処理能力に影響を与えることなく、ソフトエラーの発生によるシステムへの影響を大幅に低減できると共に、複数のキャッシュメモリ１２，２２と共通の主メモリ１５との間のデータの一貫性（同一性）を効率よく保証できる。なお、図８はＣＰＵが２つの場合を示しているが、ＣＰＵが３つ以上でも良いことは明らかである。
【００１８】
本発明（３）によれば、各時点の時刻情報の監視により、各キャッシュラインのアクセス時間間隔を効率よくチエックできる。
【００１９】
本発明（４）によれば、有効時間情報の管理により、各キャッシュラインのアクセス時間間隔を効率よくチエックできる。
【００２０】
本発明（５）によれば、所定時間間隔を超えてアクセスされなかったキャッシュラインの内、ダーティーラインのデータのみを主メモリに書き戻すので、ＣＰＵＵからの書込データを安全に保持できる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面に従って本発明に好適なる複数の実施の形態を詳細に説明する。なお 、全図を通して同一符号は同一又は相当部分を示すものとする。図１は第１の実施の形態によるプロセッサシステムのブロック図で、シングルプロセッサシステムへの適用例を示している。図において、１１はＣＰＵ、１１ａはプロセッサバス（ホストバス）、１２はキャッシュメモリ、１３はライトバック（write back）方式のキャッシュ制御部、１４は周期監視部、１５は主メモリ、１６は主メモリ制御部、１７はシステムバス（ＳＢ）、１８は各種ＩＯ装置を接続するためのＩＯバス（ＩＯＢ）、１９はシステムバス１７とＩＯバス１８間を接続するＩＯブリッジ、２０は各種ＩＯ装置に接続してＩＯバス１８のアクセス制御を行うバスマスタである。
【００２２】
ライトバック方式のキャッシュ制御では、ＣＰＵ１１からのデータはキャッシュメモリ１２にのみ書き込まれるため、主メモリ１５との間にデータの不一致が発生し、ダーティー（dirty）の状態となるが、このダーティーラインのデータは必要な時のみ主メモリ１５に書き戻されるため、ＣＰＵ１１からの極めて高速かつ高効率なキャッシュアクセスが可能となっている。また、ＣＰＵ１１とキャッシュ制御部１３との間をシステムバス１７よりも高速のプロセッサバス１１ａで接続することによりキャッシュメモリ１２の極めて
高速なアクセスを可能としている。
【００２３】
図２に第１の実施の形態によるキャッシュメモリ１２の記憶構造を示す。このキャッシュメモリ１２は複数（例えば２０４７ライン）のキャッシュラインからなっており、各ラインにはキャッシュラインの有効／無効を表す「ステータス」と、主メモリ１５の上位アドレスを格納する「タグ」と、ＣＰＵ１１によってキャッシュラインにデータがフィルされ、又はその後にキャッシュラインのデータがアクセスされた時点の時刻情報を記録する「タイム」と、キャッシュデータ(例えば６４バイト)を格納する「データ」の各情報フィールドが設けられている。なお、図示しないが、必要ならキャッシュライン毎のダーティー／クリーンに係る情報が、図の「ステータス」欄又は「タグ」欄に格納される。
【００２４】
挿入図（ａ）に主メモリ１５の記憶構造を示す。キャッシュメモリ１２中の例えばキャッシュライン「００００」には主メモリ１５の上位アドレス「００００」、「０００１」〜「９９９９」の内のいずれかの上位アドレスの先頭ブロック（６４バイト分）のデータがキャッシュフィルされる関係にある。
【００２５】
図３にＣＰＵ１１からのリード処理のシーケンス図を示す。なお、以下の説明では各処理部の処理をステップＳで説明するが、好ましくは、この処理をハードウェアで実現する。ステップＳ１１ではＣＰＵ１１からキャッシュ制御部１３にリード要求を発行する。ステップＳ１２ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ１３ではコピーデータが存在するか否かを判別する。コピーが存在する（cashe hit）場合はステップＳ１４でキャッシュメモリ１２から当該データを読み出し、ステップＳ２０では時刻フィールドに現在時刻を格納する。ステップＳ２１では該データをＣＰＵ１１に転送する。
【００２６】
また上記ステップＳ１３の判別でキャッシュメモリ１２内にコピーデータが存在しない（cashe miss）場合は、ステップＳ１５でシステムバス１７にリード要求を発行する。主メモリ制御部１６はシステムバス１７の要求（トランザクション）をスヌープしており、該リード要求を検出すると、主メモリ１５から当該該データを読み出し、ステップＳ１７でキャッシュ制御部１３に転送する。キャッシュ制御部１３はステップＳ１８で該データをコピーとしてキャッシュメモリ１２に書き込む（cashe fill）と共に、ステップＳ１９ではキャッシュメモリ１２内のステータスフィールドに有効ステータスを格納する。更に、ステップＳ２０では時刻フィールドに現在時刻を格納し、当該データをＣＰＵ１１に転送する。なお、図示しないが、キャッシュラインのダーティー／クリーンを監理する場合は、ステップＳ１９の前／後において当該ラインの「ダーティー／クリーン」フラグを「クリーン」にする。
【００２７】
図４にＣＰＵ１１からのライト処理のシーケンス図を示す。ステップＳ３１ではＣＰＵ１１からキャッシュ制御部１３にライト要求を発行する。ステップＳ１２ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ１３ではコピーデータが存在するか否かを判別する。コピーが存在する（cashe hit）場合はステップＳ２０で時刻フィールドに現在時刻を書き込み、ステップＳ３２ではＣＰＵ１１からのデータをキャッシュメモリ１２に上書きする。なお、図示しないが、キャッシュラインのダーティー／クリーンを監理する場合は、ステップＳ３２の前／後において当該ラインの「ダーティー／クリーン」フラグを「ダーティー」にする。
【００２８】
また上記ステップＳ１３の判別でキャッシュメモリ１２内にコピーデータが存在しない場合は、ステップＳ１５でシステムバス１７にリード要求を発行する。これを検出した主メモリ制御部１６は、主メモリ１５から当該該データを読み出し、ステップＳ１７でキャッシュ制御部１３に転送する。キャッシュ制御部１３はステップＳ１８で該データをコピ
ーとしてキャッシュメモリ１２に書き込むと共に、ステップＳ１９ではキャッシュメモリ１２内のステータスフィールドに有効ステータスを格納する。更に、ステップＳ２０では時刻フィールドに現在時刻を格納し、ステップＳ３２ではＣＰＵ１１からのデータをキャッシュメモリ１２に上書きする。
【００２９】
図５にバスマスタ２０からのリード処理のシーケンス図を示す。ステップＳ３５ではバスマスタ２０からキャッシュ制御部１３にリード要求を発行する。ステップＳ１２ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ３６ではコピーデータが存在するか否かを判別する。コピーが存在する場合はステップＳ１４でキャッシュメモリ１２から当該データを読み出し、ステップＳ３７では該データをバスマスタ２０に転送する。以上は、バスマスタ２０からの要求であるため、時刻フィールドの情報は更新しない。
【００３０】
また上記ステップＳ３６の判別でキャッシュメモリ１２内にコピーデータが存在しない場合は、ステップＳ３８でシステムバス１７にリード要求（コピー無し）を発行する。主メモリ制御部１６は該リード要求を検出すると、主メモリ１５から当該該データを読み出し、ステップＳ３９でバスマスタ２０に転送する。
【００３１】
図６にバスマスタ２０からのライト処理のシーケンス図を示す。ステップＳ４１ではバスマスタ２０からキャッシュ制御部１３にライト要求を発行する。ステップＳ１２ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ４２ではコピーデータが存在するか否かを判別する。コピーが存在する場合は、ステップＳ４３でステータスフィールドを無効にし、またコピーが存在しない場合は、ステップＳ４３の処理をスキップする。ステップＳ４４では主メモリ制御部１６に無効化完了を通知し、ステップＳ４６では主メモリ制御部１６がバスマスタ２０からのデータを主メモリ１５に書き込む。
【００３２】
図７に周期監視処理のシーケンス図を示す。周期監視部１４はステップＳ５１において予め定められた周期でキャッシュ制御部１３に時刻フィールドのチェック要求を発行する。キャッシュ制御部１３はステップＳ５２において、要求されたキャッシュアドレスに従ってステータスフィールドと時刻フィールドとをチェックする。ステップＳ５３ではステータスが有効か否かを判別し、有効の場合は、更に、ステップＳ５４で時刻フィールドをチェックする。ステップＳ５５では所定時間以上参照（アクセス）なしか否かを判別し、参照なしの場合はステップＳ５６で当該ラインのステータスを無効とする。
【００３３】
なお、所定時間以上参照なしか否かは、例えば当該キャッシュラインの時刻フィールドに記録されている前時点の時刻情報と現時点で取得した時刻情報とを比較し、差が所定時間以上であるか否かにより判別できる。又は当該キャッシュラインの時刻フィールドに記録されている前時点の時刻情報と前々時点の時刻情報とを比較し、差が所定時間以上であるか否かにより判別できる。
【００３４】
ステップＳ５７では主メモリ制御部１６に当該ラインデータのライトバックを要求し、これを受けた主メモリ制御部１６ではステップＳ５８で主メモリ１５にデータを書き戻す。また上記ステップＳ５３の判別でステータスが無効の場合、又はステップＳ５５の判別で所定時間以内に参照されている場合は、そのままこの処理を抜ける。
【００３５】
なお、キャッシュラインのダーティー／クリーンを監理する場合は、更にステップＳ５９で当該ラインがダーティーか否かを判別し、ダーティーの場合は当該ラインのデータをライトバックする。また、クリーンの場合は、このまま処理を抜ける。
【００３６】
一般にキャッシュメモリ１２では、主メモリ１５に比べてＥＣＣ等によるエラー耐性が
低いため、ソフトエラー（放射線等による一時的、単発的なエラー）が発生すると致命的なシステムエラーとなり易いが、本第１の実施の形態によれば、データを不必要にキャッシュメモリ１２に滞在させない構成により、安全で効率よいシステム運用が可能となる。
【００３７】
なお上記第１の実施の形態では時間情報フィールドに現時点の時刻情報を記録したが、これに限らない。他にも、例えば有効時間情報を記録して、周期的にこれを所定量だけ減算し、一方、アクセスがあったキャッシュラインの有効時間を延長することで、所定時間を下回ったラインのデータを主メモリ１５にライトバックするように構成しても良い。
【００３８】
この場合は、図２の「タイム」フィールドに有効時間情報を記録して管理する。具体的には、図３のリード処理において、自キャッシュメモリにコピーが存在しない場合は主メモリからフィルしたキャッシュラインの有効時間フィールドに初期値を設定し、また自キャッシュメモリにコピーが存在する場合はアクセスしたラインの有効時間フィールドの値を所定値だけ増加させる。また図４のライト処理において、自キャッシュメモリにコピーが存在しない場合は主メモリからフィルしたキャッシュラインの有効時間フィールドに初期値を設定し、また自キャッシュメモリにコピーが存在する場合はアクセスしたラインの有効時間フィールドの値を所定値だけ増加させる。ＩＯからのリード／ライト処理に係る図５、図６の処理については同様でよい。また図７の監視処理において、あるキャッシュラインのステータスが有効で、かつ有効時間長が所定値以下の場合は、当該ラインのステータスフィールドに無効を書き込み、当該データを主メモリ１６にライトバックする。また、ステータスが有効で、かつ有効時間長が所定値を超える場合は有効時間フィールドの値を所定量だけ減少させる。
【００３９】
図８は第２の実施の形態によるプロセッサシステムのブロック図で、マルチプロセッサシステムへの適用例を示している。図において、１１，２１はＣＰＵ、１１ａ，２１ａはプロセッサバス（ホストバス）、１２，２２はライトバック型のキャッシュメモリ、１３，２３はキャッシュ制御部、１４，２１４は周期監視部、１５はシステムに共通の主メモリ、１６は主メモリ制御部、１７はＣＰＵ１１，２１のシステムバス（ＳＢ）、１８はＩＯバス（ＩＯＢ）、１９はＩＯブリッジ、２０はＩＯ装置などのバスマスタである。ＣＰＵ１１，２１とキャッシュ制御部１３，２３との各間をシステムバス１７よりも高速のプロセッサバス１１ａ，２１ａでそれぞれ接続することによりキャッシュメモリ１２，２２の極めて高速なアクセスを可能としている。
【００４０】
図９に第２の実施の形態によるキャッシュメモリ１２，２２の記憶構造を示す。ここでは、ステータス情報の内容が異なっており、「０」はキャッシュラインの無効、「１」はキャッシュ有効かつ自キャッシュでのみ占有、「２」はキャッシュ有効かつ他キャッシュと共有の各状態を表す。その他の内容については上記図２で説明したものと同様で良い。
【００４１】
図１０にＣＰＵ１１（ＣＰＵ２１からの場合も同様）からのリード処理のシーケンス図を示す。ステップＳ６１ではＣＰＵ１１からキャッシュ制御部１３にリード要求を発行する。ステップＳ６２ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ６３ではコピーデータが存在するか否かを判別する。コピーが存在する場合はステップＳ６４でキャッシュメモリ１２から当該データを読み出し、ステップＳ６５では時刻フィールドに現在時刻を格納する。ステップＳ６６では該データをＣＰＵ１１に転送する。
【００４２】
また上記ステップＳ６３の判別でキャッシュメモリ１２内にコピーデータが存在しない場合は、ステップＳ６７でシステムバス１７にリード要求を発行する。キャッシュ制御部２３はシステムバス１７の要求をスヌープしており、該リード要求を検出すると、ステップＳ６８では自キャッシュメモリ２２内にコピーデータが存在するか否かを判別する。コ
ピーが存在する場合は、後に他キャッシュメモリ１２と同一データを共有することになるため、ステップＳ７１で自キャッシュのステータスフィールドを共有にする。ステップＳ６９ではキャッシュメモリ２２から当該データを読み出し、ステップＳ７０では当該データをキャッシュ制御部１３に転送する。ステップＳ７２ではキャッシュ制御部１３が当該データをキャッシュメモリ１２に書き込み、ステップＳ６５では当該ラインの時刻フィールドに現在時刻を格納する。そして、ステップＳ６６では当該データをＣＰＵ１１に転送する。
【００４３】
また、上記ステップＳ６８の判別でキャッシュメモリ２２にもコピーが存在しない場合は、ステップＳ７３でシステムバス１７にリード要求を発行する。主メモリ制御部１６はシステムバス１７の要求（即ち、両キャッシュメモリ１２，２２にコピーが存在しなかったこと）をスヌープしており、該リード要求を検出すると、ステップＳ７４では主メモリ１５から当該該データを読み出し、ステップＳ７５でキャッシュ制御部１３（キャッシュ制御部２３でもよい）に転送する。キャッシュ制御部１３はステップＳ７６で当該ラインのステータスフィールドを有効かつ占有にし、ステップＳ７２で該データをコピーとしてキャッシュメモリ１２に書き込むと共に、ステップＳ６５ではキャッシュメモリ１２内の時刻フィールドに現在時刻を格納する。ステップＳ６６では当該データをＣＰＵ１１に転送する。なお、図示しないが、キャッシュラインのダーティー／クリーンを監理する場合は、ステップＳ７６の前／後において当該ラインの「ダーティー／クリーン」フラグを「クリーン」にする。
【００４４】
図１１にＣＰＵ１１（ＣＰＵ２１からの場合も同様）からのライト処理のシーケンス図を示す。ステップＳ８１ではＣＰＵ１１からキャッシュ制御部１３にライト要求を発行する。ステップＳ６２ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ８３では占有のコピーデータが存在するか否かを判別する。占有コピーが存在する場合はステップＳ８４でキャッシュメモリ１２にＣＰＵ１１からのデータを書き込み、ステップＳ８５では時刻フィールドに現在時刻を格納する。
【００４５】
また上記ステップＳ８３の判別でキャッシュメモリ１２内に占有コピーデータが存在しない場合は、更にステップＳ８６で共有コピーデータが存在するか否かを判別し、存在する場合は、後にこのキャッシュラインにＣＰＵ１１からのデータが上書きされるため、ステップＳ８７で当該ラインのステータスを占有にする。そして、ステップＳ８４に進む。
【００４６】
また上記ステップＳ８６の判別で共有コピーも存在しない場合はシステムバス１７にライト要求を発行する。キャッシュ制御部２３はシステムバス１７の要求をスヌープしており、該ライト要求を検出すると、ステップＳ８９では自キャッシュメモリ２２内にコピーデータが存在するか否かを判別する。コピーが存在する場合は、後に他キャッシュメモリ１２上で当該データが書き換えられることになるため、ステップＳ９０で自キャッシュ２２のステータスフィールドを無効にする。ステップＳ９１ではキャッシュメモリ２２から当該データを読み出し、キャッシュ制御部１３に転送する。ステップＳ９２ではキャッシュ制御部１３が当該データをキャッシュメモリ１２に書き込み、ステップＳ９３では当該ラインのステータスを占有にする。そして、ステップＳ８４に進む。
【００４７】
また、上記ステップＳ８９の判別でキャッシュメモリ２２にもコピーが存在しない場合は、ステップＳ９５でシステムバス１７にライト要求を発行する。主メモリ制御部１６はシステムバス１７の要求（即ち、両キャッシュメモリ１２，２２にコピーが存在しなかったこと）をスヌープしており、該ライト要求を検出すると、ステップＳ９６では主メモリ１５から当該該データを読み出し、ステップＳ９７でキャッシュ制御部１３（キャッシュ制御部２３でもよい）に転送する。そして、ステップＳ９２に進む。
【００４８】
なお、図示しないが、キャッシュラインのダーティー／クリーンを監理する場合は、ステップＳ８４の前／後において当該ラインの「ダーティー／クリーン」フラグを「ダーティー」にする。
【００４９】
図１２にバスマスタ２０からのリード処理のシーケンス図を示す。ステップＳ１０１ではバスマスタ２０からキャッシュ制御部１３にリード要求を発行する。ステップＳ１０２ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ１０３ではコピーデータが存在するか否かを判別する。コピーが存在する場合はステップＳ１０４でキャッシュメモリ１２から当該データを読み出し、ステップＳ１０７では該データをバスマスタ２０に転送する。
【００５０】
また上記ステップＳ１０３の判別でキャッシュメモリ１２内にコピーデータが存在しない場合はシステムバス１７にリード要求を発行する。キャッシュ制御部２３は該要求を検出すると、ステップＳ１０６でキャッシュメモリ２２内を検索し、ステップＳ１０７ではコピーデータが存在するか否かを判別する。コピーが存在する場合はステップＳ１０８でキャッシュメモリ２２から当該データを読み出し、ステップＳ１０９では該データをバスマスタ２０に転送する。
【００５１】
また上記ステップＳ１０７の判別でキャッシュメモリ２２内にもコピーデータが存在しない場合はシステムバス１７にリード要求を発行する。主メモリ制御部１６は該リード要求を検出すると、ステップＳ１１０で主メモリ１５から当該該データを読み出し、ステップＳ１１１でバスマスタ２０に転送する。
【００５２】
図１３にバスマスタ２０からのライト処理のシーケンス図を示す。ステップＳ１２１ではバスマスタ２０からキャッシュ制御部１３にライト要求を発行する。ステップＳ１２３ではキャッシュ制御部１３がキャッシュメモリ１２内を検索し、ステップＳ１２４ではコピーデータが存在するか否かを判別する。コピーが存在する場合は、ステップＳ１２５でステータスフィールドを無効にし、またコピーが存在しない場合は、ステップＳ１２５の処理をスキップする。ステップＳ１２６ではキャッシュ制御部２３に無効化完了を通知する。ステップＳ１２７ではキャッシュ制御部２３がキャッシュメモリ２２内を検索し、ステップＳ１２８ではコピーデータが存在するか否かを判別する。コピーが存在する場合は、ステップＳ１２９でステータスフィールドを無効にし、またコピーが存在しない場合は、ステップＳ１２９の処理をスキップする。ステップＳ１３０では主メモリ制御部１６に無効化完了を通知する。ステップＳ１３１では主メモリ制御部１６がバスマスタ２０からのデータを主メモリ１５に書き込む。
【００５３】
図１４に周期監視処理のシーケンス図を示す。なお、図７と同一の処理には同一のステップ番号を付して説明を省略する。ステップＳ１４１では他のキャッシュ制御部２３に同一ラインデータの無効化要求を発行する。ステップＳ１４２ではキャッシュ制御部２３がキャッシュメモリ２２内を検索し、ステップＳ１４３では同一ライン（内容）のコピーが存在するか否かを判別する。存在する場合はステップＳ１４４で当該ラインのステータスを無効にし、また存在しない場合はステップＳ１４４の処理をスキップする。そして、処理を抜ける。周期監視部２４の処理についても、同様に考えられる。
【００５４】
なお、上記第２の実施の形態では、ＣＰＵが２つの場合のマルチプロセッサシステムにおけるキャッシュ制御処理を述べたが、ＣＰＵが３つ以上の場合も同様に考えられる。
【００５５】
また、上記各実施の形態では、ＣＰＵとキャッシュメモリとがプロセッサバスで接続される場合を述べたが、これに限らない。本発明はＣＰＵとキャッシュメモリと主メモリとが共通のシステム（又はホスト）バスに接続されるシステムにも適用できる。また、本発
明は、ＣＰＵ１１，２１の内部に存在するような内部キャッシュ（一次キャッシュ）に対しても同様に適用できる。
【００５６】
また、上記本発明に好適なる複数の実施の形態を述べたが、本発明思想を逸脱しない範囲内で各部の構成、制御、処理及びこれらの組み合わせの様々な変更が行えることは言うまでも無い。
【図面の簡単な説明】
【００５７】
【図１】第１の実施の形態によるプロセッサシステムのブロック図である。
【図２】第１の実施の形態によるキャッシュメモリの記憶構造を示す図である。
【図３】第１の実施の形態によるＣＰＵからのリード処理のシーケンス図である。
【図４】第１の実施の形態によるＣＰＵからのライト処理のシーケンス図である。
【図５】第１の実施の形態によるバスマスタからのリード処理のシーケンス図である。
【図６】第１の実施の形態によるバスマスタからのライト処理のシーケンス図である。
【図７】第１の実施の形態による周期監視部からの監視処理のシーケンス図である。
【図８】第２の実施の形態によるプロセッサシステムのブロック図である。
【図９】第２の実施の形態によるキャッシュメモリの記憶構造を示す図である。
【図１０】第２の実施の形態によるＣＰＵからのリード処理のシーケンス図である。
【図１１】第２の実施の形態によるＣＰＵからのライト処理のシーケンス図である。
【図１２】第２の実施の形態によるバスマスタからのリード処理のシーケンス図である。
【図１３】第２の実施の形態によるバスマスタからのライト処理のシーケンス図である。
【図１４】第２の実施の形態による周期監視部からの監視処理のシーケンス図である。
【符号の説明】
【００５８】
１１，２１  ＣＰＵ
１１ａ，２１ａ  プロセッサバス（ホストバス）
１２，２２  キャッシュメモリ
１３，２３  キャッシュ制御部
１４，２４  周期監視部
１５  主メモリ
１６  主メモリ制御部
１７  システムバス（ＳＢ）
１８  ＩＯバス
１９  ＩＯブリッジ
２０  バスマスタ
【図１】
2005092311.tif 000003
【図２】
2005092311.tif 000004
【図３】
2005092311.tif 000005
【図４】
2005092311.tif 000006
【図５】
2005092311.tif 000007
【図６】
2005092311.tif 000008
【図７】
2005092311.tif 000009
【図８】
2005092311.tif 000010
【図９】
2005092311.tif 000011
【図１０】
2005092311.tif 000012
【図１１】
2005092311.tif 000013
【図１２】
2005092311.tif 000014
【図１３】
2005092311.tif 000015
【図１４】
2005092311.tif 000016