(57)【特許請求の範囲】
【請求項１】
メインメモリに格納されたデータの一部を格納するキャッシュデータメモリと、前記キャッシュデータメモリに格納されたデータのメインメモリ内の位置を示す情報を格納するキャッシュタグメモリを具備するキャッシュシステムにおいて、
前記キャッシュタグメモリの情報の一部を格納するキャッシュタグバッファを設けると共に、
メモリアクセス要求を受けると、前記キャッシュタグメモリと前記キャッシュタグバッファの両方を検索し、前記キャッシュタグバッファに目的のキャッシュブロックが存在する場合は、前記キャッシュタグメモリの検索結果を待たずに、前記キャッシュタグバッファの情報を使用して前記キャッシュデータメモリに対するアクセスを制御するキャッシュ制御手段を有し、
前記キャッシュタグバッファは各キャッシュブロック毎に、当該キャッシュブロックを使用するトランザクションが存在するか否かを示すロックビットを持ち、前記キャッシュ制御手段は前記ロックビットを使用してキャッシュタグメモリに対するキャッシュブロックの書き戻し処理を行うことを特徴とするキャッシュシステム。
【請求項２】
請求項１記載のキャッシュシステムにおいて、前記キャッシュタグバッファは各キャッシュブロック毎に、当該キャッシュブロックに対し状態変更が行われたか否か示すダーティビットを更に持ち、前記キャッシュメモリ制御手段は前記ダーティビットを使用してキャッシュタグメモリに対するキャッシュブロックの書き戻し処理を行うことを特徴とするキャッシュシステム。
【請求項３】
請求項２記載のキャッシュシステムにおいて、前記キャッシュ制御手段はダーティビットの状態に応じてキャッシュタグバッファのキャッシュタグメモリに対する不要な書き戻しを抑止することを特徴とするキャッシュシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はキャッシュメモリを備えるコンピュータシステムに関し、特にキャッシュメモリに対するアクセスを高速化するのに好適なキャッシュシステムに関する。
【０００２】
【従来の技術】
近年、プロセッサの動作周波数が急速に高くなるのに伴い、コンピュータシステム全体の処理時間に対するメモリアクセスレイテンシの占める割合がますます大きくなってきた。従来からメモリアクセスレイテンシの削減のために取られてきた手法としてキャッシュメモリを設けることが一般的であった。最も一般的なキャッシュメモリは、タグ及びタグに付加された有効ビットを含むキャッシュタグメモリ、メモリメインメモリのデータの一部を保持するキャッシュデータメモリから構成される。キャッシュメモリの構成要素の一つであるキャッシュタグメモリは、キャッシュデータメモリが保持するメインメモリ内のデータの位置を示す情報（タグ）を格納し、キャッシュヒット判定を行うために用いられる。現在ではＬＳＩの集積度が向上し、又製造にかかるコストが低くなっているため、コンピュータシステムにおけるキャッシュメモリの容量が増大し、それに伴ないキャッシュタグメモリの容量も増大している。
【０００３】
キャッシュタグメモリの容量の増大は、キャッシュアクセスレイテンシに影響を及ぼす。キャッシュタグメモリの容量がＬＳＩ内で実装できる大きさを超えると、ＬＳＩの外部にキャッシュタグメモリを置くことになり、このことはＬＳＩ外部遅延のためキャッシュアクセスレイテンシの増加を招く。従って、増大したキャッシュタグメモリに対するアクセスレイテンシを削減することが、コンピュータシステムにおける性能向上の課題の一つと言える。
【０００４】
コンピュータシステムにおいて、キャッシュタグメモリに対するアクセスを最適化し性能向上を行っている従来技術としては、例えば、特開平９−２９３０６０号公報がある。この従来技術では、複数のプロセッサがキャッシュシステムを介してメインメモリを共有するマルチプロセッサシステムにおいて、各キャッシュシステム内に、他キャッシュシステムから発行されたアドレス履歴を保持し、他キャッシュシステムから通知されたアドレスがアドレス履歴に保持されている場合、キャッシュタグメモリへの不要なアクセスを抑止するコヒーレンシトランザクションヒストリ制御回路を用意して、キャッシュコヒーレンシ制御のためのキャッシュメモリ状態判定処理の効率化を図っている。
【０００５】
一般にキャッシュタグメモリでは、キャッシュコヒーレンシ制御のために、キャッシュブロックの状態を「Ｍｏｄｉｆｉｅｄ」（変更済み）、「Ｅｘｃｌｕｓｉｖｅ」（排他的）、「Ｓｈａｒｅｄ」（共有）、「Ｉｎｖａｌｉｄ」（無効）の４状態（ＭＥＳＩアルゴリズム）で管理している。「Ｉｎｖａｌｉｄ」（Ｉ）は、当該キャッシュブロックに有効なデータが入っていないことを示している。「Ｓｈａｒｅｄ」（Ｓ）は、当該キャッシュブロックにメインメモリと同じデータ（クリーンなデータ）が入っており、このデータが他のキャッシュにも存在（共有）することを示している。「Ｅｘｃｌｕｓｉｖｅ」（Ｅ）は、当該キャッシュブロックにメインメモリと同じデータ（クリーンなデータ）が入っており、かつ、このデータが他のキャッシュに存在しないことを示している。「Ｍｏｄｉｆｉｅｄ」（Ｍ）は、当該キャッシュブロックにメインメモリとは異なる可能性があるデータ（ダーティなデータ）が格納され、このデータが他のキャッシュに存在しないことを示している。すなわち、キャッシュブロックにデータが書き込まれた場合、メインメモリとは異なる可能性のダーティなデータとなる。
【０００６】
上記従来技術では、「Ｓｈａｒｅｄ」又は「Ｉｎｖａｌｉｄ」の時にキャッシュタグメモリのアクセスを抑止する。従って、例えば頻繁に書き込みを行うタスクを処理する場合、書き込みの度にキャッシュブロックの状態を「Ｍｏｄｅｆｉｅｄ」に更新するので、頻繁にキャッシュタグメモリにアクセスすることとなる。この時、キャッシュタグメモリに対するアクセスレイテンシは、コンピュータシステムの性能を考える上で無視できない問題となる。上記従来技術において、トランザクション処理を行った際の、キャッシュタグメモリに対するアクセスの頻度は、キャッシュヒット時にはキャッシュタグメモリに対して読み込み処理を１回、書き込み処理を１回必要とする。また、キャッシュミス時にはキャッシュメモリに対し読み込み処理を２回、書き込み処理を２回必要とする。
【０００７】
【発明が解決しようとする課題】
このように、従来技術においては、キャッシュタグメモリが大容量となり、キャッシュ制御回路等が存在するＬＳＩの外部にキャッシュタグメモリが実装される等、キャッシュタグメモリに対するアクセスレイテンシが増加した場合、コンピュータシステムのトランザクション処理に要するレイテンシが増大する。
【０００８】
本発明の目的は、キャッシュタグメモリに対するアクセスレイテンシを削減することにより、さらなるコンピュータシステムの性能向上を行うことができるキャッシュシステムを提供することにある。
【０００９】
【課題を解決するための手段】
本発明では、キャッシュ制御回路等が存在するＬＳＩ内にキャッシュタグバッファを用意する。これはキャッシュタグメモリの一部を格納でき、コンピュータシステム内でトランザクション処理が完了するまでキャッシュタグメモリに存在するトランザクション処理対象キャッシュブロックの状態を保持するものである。これにより、トランザクション処理が、キャッシュタグメモリから一度対応するキャッシュブロックの情報を読み出した後、キャッシュ制御回路等が存在するＬＳＩ内のキャッシュタグバッファにアクセスすることのみで、キャッシュタグメモリに対する処理を行うことができる。従って、キャッシュタグバッファへのアクセスレイテンシを最小にすることができ、コンピュータシステムのトランザクション処理に要するレイテンシを削減することができる。
【００１０】
また、本発明では、キャッシュタグバッファは、キャッシュブロック状態ビット（ＭＥＳＩ）とともに、キャッシュブロックが更新されたか否かを示すダーティビットと、キャッシュブロックを使用するトランザクションがコンピュータシステム内に存在するかどうかを示すロックビットを持つ。これらのビットは、キャッシュタグメモリへキャッシュタグバッファに存在するキャッシュブロック状態を書き戻す際に使用する。具体的には、ロックビットが現在キャッシュブロックを使用するトランザクションが存在しないことを示し、かつダーティビットがキャッシュブロックに対し状態更新がなされたことを示すキャッシュブロックが存在した場合に、キャッシュタグメモリに対し該キャッシュブロックの書き戻しを行う。他のビット状態の時は書き戻しを行わない。すなわち、ロックビットを常に監視し、キャッシュタグバッファにおいて使用されていないキャッシュブロックが存在した場合にはこれをキャッシュタグメモリに書き戻すことで、キャッシュタグバッファの効率的な利用を行う。また、ダーティビットを見ることでキャッシュタグメモリへの不要な書き戻しを防ぎ、キャッシュタグメモリに対するアクセスの効率化を行う。
【００１１】
【発明の実施の形態】
以下、本発明の実施例について図面を用いて説明する。
図１に、本発明を適用した場合のコンピュータシステムの一実施例の構成図を示す。図１において、本コンピュータシステムはプロセッサ１０及び１１、キャッシュシステム２０及び２１、共通バス３０、メインメモリ４０を備える。キャッシュシステム２０は、プロセッサ１０とキャッシュシステム２０を接続するプロセッサインターフェース２１０と、共通バス３０とキャッシュシステム２０を接続するメモリバスインターフェース２２０と、コヒーレンシトランザクションヒストリ制御回路２３０と、プロセッサインターフェース２１０又はコヒーレンシトランザクションヒストリ制御回路２３０から転送されるアドレスを登録するアドレスレジスタ２４０と、キャッシュデータを格納するキャッシュデータメモリ２５０と、キャッシュデータメモリ２５０に格納されているキャッシュデータのアドレスとキャッシュコヒーレンシ制御のための「Ｍｏｄｉｆｉｅｄ」、「Ｓｈａｒｅｄ」、「Ｅｘｃｌｕｓｉｖｅ」、「Ｉｎｖａｌｉｄ」の４状態を格納するキャッシュタグメモリ２６０と、本発明の特徴部分であるキャッシュタグメモリ２６０の一部を格納するキャッシュタグバッファ２７０と、キャッシュシステム２０内の各回路の制御を行うキャッシュ制御回路２８０を備える。
【００１２】
キャッシュタグバッファ２７０は、キャッシュタグメモリ２６０以外の、キャッシュ制御回路２８０及びその他の回路が存在するＬＳＩ内に置かれる。キャッシュタグメモリ２６０は、大容量になると、このＬＳＩの外部に実装され、場合によっては、キャッシュデータメモリも、該ＬＳＩの外部に実装される。
【００１３】
図１においては、キャッシュシステム２１の構成要素については省略しているが、キャッシュシステム２０と同様の構成である。また、図１では、２組のプロセッサとキャッシュシステムでマルチプロセッサシステムを構成するとしたが、３組あるいはそれ以上の組のプロセッサとキャッシュシステムでマルチプロセッサシステムが構成されることでもよい。
【００１４】
図２に、キャッシュタグメモリ２６０と本発明の特徴部分であるキャッシュタグバッファ２７０の構成例を示す。図２においては、（Ａ）がキャッシュタグメモリ２６０、（Ｂ）がキャッシュタグバッファ２７０の構成例である。ここでは、キャッシュタグメモリ２６０は４ウエイ・セット・アソシアティブ構成で、セット数Ｍは簡単に１６としている。キャッシュタグバッファ２７０はキャッシュタグメモリ２６０の一部を保持し、キャッシュ構成はキャッシュタグメモリ２６０の構成と同じで、４ウエイ・セット・アソシアティブ構成であるが、セット数Ｎは４である。すなわち、一般にＭ≧Ｎとする。図２において、キャッシュタグメモリ２６０及びキャッシュタグバッファ２７０は４ウエイ・セット・アソシアティブ構成であるため、１セット中にキャッシュブロック１，２，３，４の４キャッシュブロックの情報を保持する。
【００１５】
キャッシュタグメモリ２６０は、各セットの各キャッシュブロック毎に、キャッシュデータメモリ２５０の当該セットの当該キャッシュブロックに格納されているキャッシュデータのアドレス（タグ）を格納するタグ部３１１と、当該キャッシュブロックが４状態「Ｍ」，「Ｅ」，「Ｓ」，「Ｉ」のどの状態であるかを示すキャッシュブロック状態３１２から構成される。「Ｍ」，「Ｅ」，「Ｓ」，「Ｉ」は「Ｍｏｄｉｆｉｅｄ」，「Ｅｘｃｌｕｓｉｖｅ」，「Ｓｈａｒｅｄ」，「Ｉｎｖａｌｉｄ」の４状態にそれぞれ対応する。
【００１６】
キャッシュタグバッファ２７０は、１セットがキャッシュタグメモリ２６０のセット番号に相当するアドレス（以下インデックスアドレスとする）を格納するインデックス部３００と、各キャッシュブロック毎に、、キャッシュタグメモリ２６０におけるタグを格納するタグ部３０１、キャッシュタグメモリ２６０のキャッシュブロック状態を保持するキャッシュブロック状態部３０２、キャッシュブロックの状態更新の有無を示すダーティビット３０３、キャッシュブロックを使用しているトランザクションが存在することを示すロックビット３０４から構成される。ダーティビット３０３は、“１”である時当該キャッシュブロックの状態更新があったことを示し、“０”である時は状態更新が無かったことを示す。また、ロックビット３０４は、“１”である時当該キャッシュブロックを使用しているトランザクションが存在することを示し、“０”である時は当該キャッシュブロックを使用しているトランザクションが存在しないことを示す。
【００１７】
キャッシュタグバッファ２７０におけるキャッシュブロックの有効又は無効の判定には、キャッシュブロック状態部３０２を使用する。具体的には、「Ｉ」の場合はキャッシュブロックが無効であると判断し、「Ｉ」以外の状態である時は有効であると判断する。また、キャッシュタグバッファ２７０に対する書き込み処理は、セット単位で行う。したがって、セット内の１キャッシュブロックを処理対象とするトランザクション処理によってキャッシュタグバッファ２７０にキャッシュタグメモリ２６０のセットが登録された時、セット内の他キャッシュブロックを処理対象とするトランザクションも、キャッシュアクセスレイテンシを削減することができる。
【００１８】
以下、図１及び図２により、本発明の特徴部分であるキャッシュタグバッファ２７０を使用するトランザクション処理における、キャッシュシステム２０の動作説明を行う。
【００１９】
図１に示すコンピュータシステムにおいて、プロセッサ１０からメインメモリ４０に対する読み出しトランザクション又は書き込みトランザクションが発行されると、キャッシュシステム２０はパス５００を介し、プロセッサインターフェース２１０でトランザクションを受け取る。次にキャッシュシステム２０は、パス５０１を介しトランザクション処理対象のメモリアドレス（以下リクエストアドレスと呼ぶ）をアドレスレジスタ２４０に登録する。アドレスレジスタ２４０に登録されたリクエストアドレスは、パス５０２とパス５０３を介し各々キャッシュ制御回路２８０とキャッシュデータメモリ２５０に送られる。キャッシュ制御回路２８０は、リクエストアドレスを用いて、パス５０４を介してキャッシュタグメモリ２６０の内容を、また、パス５０５を介してキャッシュタグバッファ２７０の内容をそれぞれ読み出し、リクエストアドレスに対応するキャッシュブロックがキャッシュタグメモリ２６０又はキャッシュタグバッファ２７０に存在するかどうかを判定する。この時、キャッシュタグメモリ２６０にリクエストアドレスが指すキャッシュブロックが存在し、キャッシュタグバッファ２７０にリクエストアドレスが指すキャッシュブロックが存在しない場合（トランザクション処理における初期状態）、キャッシュ制御回路２８０は、パス５０６を介しキャッシュタグバッファ２７０に、キャッシュタグメモリ２６０の当該セットのインデックスアドレス及びセット内のタグ全てと、当該セット内のタグに対応するキャッシュブロックの状態全てを書き込む。キャッシュタグバッファ２７０に対するキャッシュブロック情報の書き込み後、当該セット内のキャッシュブロックを処理対象とするトランザクションは、キャッシュタグバッファ２７０に存在するキャッシュブロック情報を更新することにより、キャッシュアクセス及びキャッシュコヒーレンシ制御を行うことができる。他の場合も含め、キャッシュタグバッファ２７０に対するキャッシュ制御回路２８０の詳細な動作は後で説明する。
【００２０】
キャッシュ制御回路２８０は、キャッシュタグメモリ２６０又はキャッシュタグバッファ２７０に、リクエストアドレスに対応するタグが存在している場合は、タグに付随するキャッシュブロックの状態判定を行う。キャッシュブロック状態判定の結果、キャッシュヒットが有効の場合、キャッシュ制御回路２８０はパス５１４を介しキャッシュデータメモリ２５０に対し、キャッシュヒットした情報を送る。キャッシュヒットしたという情報を受けたキャッシュデータメモリ２５０は、パス５０７を介し、該当するキャッシュブロックのデータをプロセッサインターフェース２１０に対し出力する。プロセッサインターフェース２１０はパス５００を介し、受けたデータをプロセッサ１０に対し送る。また、キャッシュヒット時、書き込みトランザクションでありかつリクエストアドレスに対応するタグのキャッシュブロック状態が「Ｅｘｃｌｕｓｉｖｅ」の場合、キャッシュ制御回路２８０はパス５０６を介し、キャッシュブロックの状態を「Ｍｏｄｉｆｉｅｄ」に更新する。他の状態、例えば「Ｓｈａｒｅｄ」の場合、キャッシュブロックの状態の更新はない。
【００２１】
一方、キャッシュタグメモリ２６０及びキャッシュタグバッファ２７０のいずれにも、リクエストアドレスに対応するタグが存在せず、キャッシュミスの場合キャッシュ制御回路２８０はパス５０８を介し、メモリバスインターフェース２２０にキャッシュミスしたという情報を送る。キャッシュミスしたという情報を受け取ったメモリバスインターフェース２２０はパス５０９を介し、共通バス３０に対し読み出し又は書き込みトランザクションを発行する。読み出し又は書き込みトランザクションは共通バスを介し、パス５１０を通ってキャッシュシステム２１に、パス５１１を通ってメインメモリ４０に対し転送される。他キャッシュシステムからのトランザクションに対するキャッシュコヒーレンシ処理は、キャッシュシステム２１とキャッシュシステム２０では同じなので、ここでは例としてキャッシュシステム２０における処理を説明する。
【００２２】
キャッシュシステム２０は、共通バス３０に流れるキャッシュシステム２１からのトランザクションをスヌープし、自身のキャッシュブロック状態をチェックする。具体的には、メモリバスインターフェース２２０はパス５０９を介して、共通バス３０に流れるキャッシュシステム２１のトランザクションを取り込む。この後、メモリバスインターフェース２２０は、パス５１２を介して取り込んだトランザクションをコヒーレントトランザクションヒストリ制御回路２３０に送る。コヒーレントトランザクションヒストリ制御回路２３０は、他キャッシュシステム２１から発行されたトランザクションの処理対象アドレス（以下、コヒーレンシアドレス）の履歴を保持しており、取り込んだトランザクションのコヒーレンシアドレスが保持されていない場合、パス５１３を介しアドレスレジスタ２４０に、当該トランザクションのコヒーレンシアドレスを登録する。なお、コヒーレンシトランザクションヒストリ制御回路２３０における処理は、先の特開平９−２９３０６０号公報に詳述されているので、ここでは省略する。
【００２３】
アドレスレジスタ２４０に登録されたコヒーレンシアドレスは、パス５０２とパス５０３を介し、各々キャッシュ制御回路２８０とキャッシュデータメモリ２５０に送られる。キャッシュ制御回路２８０は、コヒーレンシアドレスを用い、パス５０４を介しキャッシュタグメモリ２６０の内容を、また、パス５０５を介しキャッシュタグバッファ２７０の内容をそれぞれ読み出す。この時、キャッシュタグメモリ２６０にコヒーレンシアドレスに対応するキャッシュブロックが存在し、キャッシュタグバッファ２７０に対応するキャッシュブロックが存在しない場合、キャッシュ制御回路２８０は、パス５０６を介しキャッシュタグバッファ２７０に、キャッシュタグメモリ２６０の当該セットのインデックスアドレス及びセット内全てのタグ、当該セット内のタグに対応するキャッシュブロックの状態全てを書き込む。キャッシュタグバッファ２７０に対するキャッシュブロック情報の書き込み後、当該セット内のキャッシュブロックを処理対象とするトランザクションは、キャッシュタグバッファ２７０に存在するキャッシュブロック情報を更新することにより、キャッシュコヒーレンシ制御を行うことができる。キャッシュ制御回路２８０は、コヒーレンシアドレスに対応するキャッシュブロックがキャッシュタグメモリ２６０又はキャッシュタグバッファ２７０に存在する場合は、タグに付随するキャッシュブロックの状態判定を行う。キャッシュブロック状態判定の結果、キャッシュヒットが有効の場合、キャッシュ制御回路２８０はパス５１４を介しキャッシュデータメモリ２５０に対し、キャッシュヒットした情報を送る。また、キャッシュヒットの場合、前記キャッシュタグバッファ２７０への書き込み時に、読み込みトランザクションは「ｓｈａｒｅｄ」を、書き込みトランザクションは「Ｉｎｖａｌｉｄ」をキャッシュブロックの状態に書き込む。キャッシュヒットしかつキャッシュブロックの状態が「Ｍｏｄｉｆｉｅｄ」の時、最新データがキャッシュシステム２０に存在するので、キャッシュデータメモリ２５０はパス５０８を介し、該当するキャッシュブロックのデータをメモリバスインターフェース２２０に送る。メモリバスインターフェース２２０は該キャッシュブロックのデータを共通バス３０を介し、キャッシュシステム２１に返す。
【００２４】
キャッシュシステム２０が最新データをメインメモリ４０又はキャッシュシステム２１から受けた場合のトランザクション処理動作は以下の通りである。最新データを受けたメモリバスインターフェース２２０は、プロセッサインターフェース２１０を介してプロセッサ１０に最新データを送るのと同時に、キャッシュデータメモリ２５０に最新データを書き込む。また、最新データがキャッシュシステム２０に到着したという情報は、コヒーレンシトランザクションヒストリ制御回路２３０、アドレスレジスタ２４０を介しキャッシュ制御回路２８０に送られ、情報を受け取ったキャッシュ制御回路２８０はキャッシュタグバッファ２７０のキャッシュブロック状態の更新をする。
【００２５】
図３に、キャッシュ制御回路２８０の構成例を示す。図３においては、図１と同じ参照番号は同じものを指す。キャッシュ制御回路２８０は、キャッシュタグメモリ２６０及びキャッシュタグバッファ２７０へサーチ要求を出すキャッシュタグサーチ回路２８１と、キャッシュタグメモリ２６０から読み出したセットをキャッシュタグバッファ２７０に書き込むキャッシュタグバッファ登録回路２８２と、キャッシュタグメモリ２６０及びキャッシュタグバッファ２７０から読み出したキャッシュブロック状態からキャッシュヒットを判定するキャッシュタグ情報集計回路２８３と、キャッシュタグバッファ２７０のキャッシュブロック状態を更新するキャッシュタグ状態更新回路２８４と、キャッシュタグバッファ２７０のセットをキャッシュタグメモリ２６０に書き戻すキャッシュタグメモリ登録回路２８５から構成される。
【００２６】
以下、図３により、キャッシュタグメモリ２６０及びキャッシュタグバッファ２７０に対するキャッシュ制御回路２８０の詳細な動作を説明する。
【００２７】
キャッシュタグサーチ回路２８１は、パス５０１あるいはパス５１３を介して、プロセッサ１０から発行されたトランザクションのリクエストアドレス、あるいは他キャッシュシステム２１から発行されたトランザクションのコヒーレンシアドレスがアドレスレジスタ２４０にセットされると、パス５５０を介し該リクエストアドレス又はコヒーレンシアドレスを受け、パス５５１を介してキャッシュタグメモリ２６０に対しキャッシュタグサーチ要求を発行し、また、同時にパス５５２を介してキャッシュタグバッファ２７０に対しキャッシュタグサーチ要求を発行する。以下では、プロセッサ１０から発行されたトランザクションのリクエストアドレスを受けた場合を例に動作を説明するが、他キャッシュシステム２１から発行されたトランザクションのコヒーレンシアドレスを受けた場合の動作も基本的に同じである。
【００２８】
キャッシュタグサーチ要求は、パス５５３を介してキャッシュタグメモリ２６０からリクエストアドレスに対応するキャッシュブロックの情報を、同様にパス５５４を介してキャッシュタグバッファ２７０からリクエストアドレスに対応するキャッシュブロックの情報を読み出し、キャッシュタグ情報集計回路２８３に送る。読み出しに要するレイテンシは、キャッシュタグメモリ２６０よりも高速な記憶装置で構成されるキャッシュタグバッファ２７０の方が短い。
【００２９】
キャッシュタグ情報集計回路２８３は、キャッシュタグバッファ２７０からキャッシュブロックの情報を受けた時、最新のキャッシュブロック情報はキャッシュタグバッファに存在するものとと判断し、該キャッシュブロック情報を用い、キャッシュのヒット判定を行う。一方、キャッシュタグバッファ２７０からキャッシュブロック情報を受けることができなかった場合、キャッシュタグ情報集計回路２８４は、キャッシュタグメモリ２６０からのキャッシュブロック情報が読み出されるのを待つ。キャッシュタグメモリ２６０から該キャッシュブロックの情報を受けた時は、該情報を元にキャッシュヒット判定を行う。しかし、キャッシュタグメモリ２６０からも該キャッシュブロック情報が読み出されなかった時は、キャッシュミスと判断する。キャッシュブロックの状態判定後、キャッシュタグ情報集計回路２８４は、キャッシュヒット判定結果を、パス５１４を介してキャッシュデータメモリ２５０に報告する。
【００３０】
このキャッシュタグ情報集計回路２８４における処理と同時に、キャッシュタグバッファ登録回路２８２は、パス５５５を介してキャッシュタグメモリ２６０から、また、パス５５６を介してキャッシュタグバッファ２７０から、それぞれ読み出されたキャッシュブロック情報を受ける。この時、キャッシュタグバッファ登録回路２８２では、対応するキャッシュブロックが存在するセット内のキャッシュブロック情報全てを受ける。キャッシュタグバッファ登録回路２８２は、キャッシュブロック情報をキャッシュタグメモリ２６０及びキャッシュタグバッファ２７０から受けると、キャッシュタグバッファ２７０に対し、更新処理を行うか判定する。
【００３１】
更新処理の判定は、次の２条件の組み合わせで決まる。条件１はキャッシュタグバッファ２７０にリクエストアドレスに対応するセットが存在したかどうか、条件２はキャッシュタグバッファ２７０内又はキャッシュタグメモリ２６０にリクエストアドレスに対応するキャッシュブロックの情報が存在したかどうかである。
【００３２】
キャッシュタグバッファ登録回路２８２は、まず、キャッシュタグバッファ２７０にセットが存在かつキャッシュブロック情報が存在した時は、更新処理は行わなず、現在キャッシュタグバッファ２７０に登録されているキャッシュブロック情報をトランザクション処理において使用する。この時、該キャッシュブロックにおいてロックビットが“０”の時、ロックビットを“１”にする。次に、キャッシュタグバッファ２７０にセットは存在するがキャッシュブロック情報が存在しなかった場合は、セット内の各ロックビットを見る。そして、セット内のロックビットが“０”のキャッシュブロックが存在した場合、セット内の該ロックビットが“０”であるキャッシュブロックにリクエストアドレスに対応するキャッシュブロック情報を書き込む。この時、書き込んだ場所に存在したキャッシュブロックの状態が「Ｉ」以外なら、該キャッシュブロックをメインメモリ３０に書き戻す。セット内の全てのロックビットが“１”の場合、キャッシュタグバッファ２７０に在るセット内の任意のキャッシュブロックを選択し、該キャッシュブロックの状態が「Ｉ」以外ならメインメモリ３０に書き戻し、セット内の選択したキャッシュブロックの場所にリクエストアドレスに対応するキャッシュブロック情報をパス５５７を介して新規に書き込む。この時、該キャッシュブロックに対しロックビットを“１”にする。そして、キャッシュタグバッファ２７０にセットが存在しない、かつキャッシュタグメモリ２６０にタグ情報が存在した時は、キャッシュタグメモリ２６０から読み出したセットをキャッシュタグバッファ２７０にパス５５７を介して書き込む。この時、該キャッシュブロックに対しロックビットを“１”にする。最後にキャッシュタグバッファ２７０にセットが存在しない、かつキャッシュタグメモリ２６０にタグ情報が存在したなかった時は、キャッシュタグメモリ２６０から読み出したセット内の任意のキャッシュブロックを選択し、該キャッシュブロックの状態が「Ｉ」以外ならメインメモリ３０に書き戻し、セット内の選択したキャッシュブロックの場所に対応するタグ情報をキャッシュタグバッファ２７０にパス５５７を介して新規に書き込む。この時、該キャッシュブロックに対しロックビットを“１”にする。
【００３３】
キャッシュタグ状態更新回路２８４は、コンピュータシステムにおいてトランザクション処理が行われている間に対応するタグ情報の更新要求が来た場合に、キャッシュタグバッファ２７０の更新を行う。具体的には、パス５５８を介してアドレスレジスタ２４０から更新対象のキャッシュブロックを示すアドレスを受け、パス５５９を介してキャッシュタグバッファ２７０内の該キャッシュブロックの状態更新を行う。また、この時に該キャッシュブロックのダーティビットを“１”にする。
【００３４】
キャッシュタグメモリ登録回路２８５は、キャッシュタグバッファ２７０の各セットにおけるダーティビット及びロックビットをパス５６０を介して常に監視し、コンピュータシステム内で任意のセット内における全てのキャッシュブロックを使用するトランザクション処理が完了、すなわちロックビットが全て“０”となり、かつ該セットにおけるダーティビットのうちどれか１つでもセット内で“１”である場合に、キャッシュタグメモリ２６０に対しパス５６１を介してセットの書き戻しを行う。この処理はシステム内トランザクション処理と並列に行われ、コンピュータシステムのデータ処理スループットに影響を及ぼさない。また、キャッシュタグバッファ２７０の特徴として、ダーティビットを使用し、キャッシュタグバッファ２７０からキャッシュタグメモリ２６０に対する不要なアクセスを削減している。具体的には、キャッシュタグメモリの状態更新時にダーティビットをセットし、セットにおけるキャッシュ状態の更新があったことを示す。これにより、セットに対しキャッシュ状態の更新があったことを判別でき、キャッシュタグメモリ２６０の該セットの状態と異なるセットのみキャッシュタグメモリ２６０に対する書き込みを行う。
【００３５】
以上のように、本実施形態によれば、コンピュータシステムにおけるトランザクション処理のキャッシュタグに対するアクセスは、ＣＰＵ又はチップセット内のキャッシュタグバッファにアクセスすることのみで実現できる。これにより、例えば特開平９〜２９３０６号公報に記載の従来技術においてキャッシュヒット時にはキャッシュタグメモリに対して２回アクセスを必要とするのに対し、本実施形態では１回又は該処理対象のキャッシュブロックが存在するセットがすでにキャッシュタグバッファ２７０に格納されている場合０回で済む。同様に従来技術でキャッシュミス時にはキャッシュメモリに対するアクセスを４回必要としたのに対し、最低０回、最高２回のアクセスで済ますことができる。
【００３６】
【発明の効果】
以上述べたように、本発明によれば、にキャッシュタグメモリの一部を格納するキャッシュタグバッファを設けることにより、キャッシュタグメモリへのアクセス回数を削減することができ、コンピュータシステムにおけるキャッシュアクセスレイテンシを削減することができる
【図面の簡単な説明】
【図１】本発明を適用したコンピュータシステムの一実施形態の構成図である。
【図２】キャッシュタグメモリとキャッシュタグバッファの構成例を示す図である。
【図３】図１中のキャッシュ制御回路２８０の詳細構成例を示す図である。
【符号の説明】
１０、１１  プロセッサ
２０、２１  キャッシュシステム
９３０  共通バス
４０  メインメモリ
２１０  プロセッサインターフェース
２２０  メモリバスインターフェース
２３０  コヒーレンシトランザクションヒストリ制御回路
２４０  アドレスレジスタ
２５０  キャッシュデータメモリ
２６０  キャッシュタグメモリ
２７０  キャッシュタグバッファ
２８０  キャッシュ制御回路
２８１  キャッシュタグサーチ回路
２８２  キャッシュタグバッファ登録回路
２８３  キャッシュタグ情報集計回路
２８４  キャッシュタグ状態更新回路
２８５  キャッシュタグメモリ登録回路
３００  インデックス
３０１  タグ部
３０２  キャッシュブロック状態部
３０３  ダーティビット
３０４  ロックビット
３１１  タグ部
３１２  キャッシュブロック状態部
【図１】
0003732397.tif 000002
【図２】
0003732397.tif 000003
【図３】
0003732397.tif 000004