(57)【特許請求の範囲】
【請求項１】
データとデータアドレスとを対応付けた組を複数組記憶可能な第１のキャッシュ部と、
データアドレスを記憶可能な第２のキャッシュ部と、
前記第１のキャッシュ部からデータが追い出されると、追い出されるデータに対応するデータアドレスを前記第２のキャッシュ部に記録し、前記第１のキャッシュ部に空きが生じると、前記第２のキャッシュ部に記録した該データアドレスに基づいて読み出したデータと該データアドレスとを対応付けて前記第１のキャッシュ部に記憶する制御部と、
を備えることを特徴とするメモリシステム。
【請求項２】
前記第２のキャッシュ部は、データアドレスと前記第１のキャッシュ部からデータが追い出される理由を示す情報とを対応付けた組を記憶可能であり、
前記制御部は、前記第１のキャッシュ部に記録されていたデータが追い出されるときに、当該データが追い出された理由を示す情報を前記第２のキャッシュ部に記録する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
当該メモリシステムはバス結合型並列計算機システムにおいて使用されるものであって、前記制御部は、他プロセッサがバスにリクエストを出し前記第１のキャッシュ部に記録されていたデータを無効化するときに、該リクエストのアクセス対象のデータアドレスを、前記第２のキャッシュ部に記録することを特徴とする請求項１または請求項２に記載のメモリシステム。
【請求項４】
前記メモリシステムはバス結合型並列計算機システムにおいて使用されるものであって、前記制御部は、前記第２のキャッシュ部に記録してあるデータアドレスに対して他プロセッサがバスリクエストを出したときに、当該バスリクエストのデータ転送時に合わせてデータを入手することを特徴とする請求項１から請求項３のいずれかに記載のメモリシステム。
【請求項５】
前記メモリシステムはバス結合型並列計算機システムにおいて使用されるものであって、前記制御部は、前記第２のキャッシュ部に記録してあるデータアドレスに対してプロセッサからのアクセスが発生したときに、該データアドレスのエントリに記録してある情報に応じて、バスに出すリクエストの種類を決定することを特徴とする請求項１から請求項４のいずれかに記載のメモリシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、キャッシュメモリ装置に関するものである。通常のキャッシュメモリはデータ値を記録するデータ部分とそのデータのアドレスやステートを記録するタグ部分とが一対となったエントリから構成されるが、本発明は、既存のエントリの他に、特に、データ部分の存在しないタグ部分だけからなるエントリで構成される領域（ｄａｔａ−ｌｅｓｓキャッシュ）を持たせることで、キャッシュメモリの有効性を高めるようにしたキャッシュメモリ装置に関するものである。
【０００２】
【従来の技術】
一般に、キャッシュメモリはプロセッサと主記憶の間に位置し、主記憶に記録されているデータのうち、過去にプロセッサが使用したデータを記録しておき、プロセッサがそのデータを使用するときに、主記憶に代わってプロセッサへデータを転送する。キャッシュメモリは主記憶に比べ、小容量であるが高速であるため、プロセッサへのデータ転送を短時間で済ませることができる。したがって、データがキャッシュメモリに記録されており、キャッシュメモリからデータを転送できれば、主記憶からデータを転送する場合と比べて、プロセッサのデータ待ち時間を短縮することができ、処理時間を短縮し、性能を向上することができる。
【０００３】
キャッシュメモリの容量を有効に活用するため、キャッシュメモリに記録されるデータは、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式やそれに類似の方式により管理されることが多い。ＬＲＵ方式は、最近使用されたデータはそうでないデータに比べ近い将来再度使用される確率が高い、という経験則に基づく方式である。キャッシュメモリは、主記憶より小容量であるため、既に記録されているデータを削除しないと、新たにデータを記録することができない場合が多い。この場合、ＬＲＵ優先度が最も低いデータがキャッシュメモリから追い出され、新データはＬＲＵ優先度が最高のデータとしてキャッシュメモリに記録される。キャッシュメモリに新たなデータを記録する場合の様子を図８に示す。
【０００４】
並列計算機においては、各プロセッサのキャッシュメモリ間の整合性を保つ必要があるため、一般にコヒーレンスプロトコルと呼ばれるルールに従ってキャッシュメモリは管理される。コヒーレンスプロトコルには大別して更新型と無効化型があるが、無効化型が採用されることが多い。無効化型では、データをプロセッサ間で共用している場合に、あるプロセッサがそのデータを更新するときには、他プロセッサのキャッシュメモリに記録されている該当データを無効化する必要がある。そのため、その後になって他プロセッサが該当データに対してアクセスすると、他プロセッサのキャッシュメモリではデータが無効化されているのでキャッシュミスとなる。
【０００５】
【発明が解決しようとする課題】
１．キャッシュメモリから追い出されるデータについて：
キャッシュメモリに新データを記録する場合、該当データを記録するための空きエントリが無いときは、既にキャッシュメモリに記録されているデータの中でＬＲＵ優先度が最も低いデータがキャッシュメモリから追い出される。その後、このキャッシュメモリから追い出されたデータに対するアクセスは、データがキャッシュメモリに記録されていないのでキャッシュミスとなり、主記憶からのデータ転送が必要となる。図９のように、何らかのイベント（例えば、他プロセッサからの無効化要求）により、キャッシュメモリにデータを記録するスペースが空いたとしても、いったんキャッシュメモリから追い出されてしまったデータがキャッシュメモリに復帰することはないので、該当データに対するアクセスはキャッシュミスとなる。
【０００６】
キャッシュメモリから追い出されたデータを救う方法としては、ｖｉｃｔｉｍｃａｃｈｅがある。ｖｉｃｔｉｍ  ｃａｃｈｅはキャッシュメモリから追い出されたデータを記録するバッファであるが、容量がキャッシュメモリよりも更に小さいためｖｉｃｔｉｍ  ｃａｃｈｅにデータが記録されている時間は短い。
そのため、短時間の間にそのデータに対するアクセスが発生しない限り、そのデータはｖｉｃｔｉｍ  ｃａｃｈｅからも追い出されてしまうため、その後に発生する該当データへのアクセスはキャッシュミスとなる。
【０００７】
２．他プロセッサからの無効化要求により無効化されるデータについて：
図１０のように、あるデータ（データＡ）を４プロセッサ（プロセッサａ，ｂ，ｃ，ｄ）が共有している場合について考える。プロセッサは共有バスで結合されており、キャッシュのコヒーレントプロトコルとしては無効化型を採用しているものとする。
【０００８】
プロセッサａがデータＡを更新するために他プロセッサｂ，ｃ，ｄに対してデータＡの無効化要求を出すと、他プロセッサｂ，ｃ，ｄはその要求を受け、キャッシュメモリに記録されているデータＡを無効化（消去）する。その後、プロセッサｂ，ｃ，ｄの順でデータＡへのアクセスが発生したとする。
【０００９】
ｉ．プロセッサｂがデータＡにアクセスすると、プロセッサｂのキャッシュメモリにはデータＡが記録されていないのでキャッシュミスとなり、主記憶（もしくは他キャッシュ）からのデータ転送が必要となる。
【００１０】
ii．次に、プロセッサｃがデータＡにアクセスすると、前に発生したプロセッサｂのデータＡへのアクセスはプロセッサｃのキャッシュメモリに何の影響も及ぼさないため、プロセッサｃのキャッシュメモリにはデータＡが記録されていないのでキャッシュミスとなり、主記憶からのデータ転送が必要となる。
【００１１】
iii ．次に、プロセッサｄがデータＡにアクセスすると、前に発生したプロセッサｂ，ｃのデータＡへのアクセスはプロセッサｄのキャッシュメモリに何の影響も及ぼさないため、プロセッサｄのキャッシュメモリにはデータＡが記録されていないのでキャッシュミスとなり、主記憶からのデータ転送が必要となる。
プロセッサｂ，ｃ，ｄ単体で見るとキャッシュミス回数はそれぞれ１回である。しかし、システム全体で見ると、同データに対してキャッシュミスが３回も発生することになる。
【００１２】
これを救う方法としては、キャッシュメモリと主記憶との間に外部共有メモリを設ける方法がある。図１１にこのシステム構成を示す。この方法によれば、プロセッサｂのデータＡへのアクセスはどうにもならないが、このアクセスにより外部共有キャッシュにデータＡが記録されるため、続くプロセッサｃ，ｄのデータＡへのアクセスは外部共有キャッシュメモリにヒットする。外部共有キャッシュメモリは主記憶より動作が高速なのでデータ転送時間を短くすることができる。しかし、キャッシュメモリにヒットする場合と比べると以前として時間がかかり過ぎる。
【００１３】
【課題を解決するための手段】
前述した問題点を解決するために、本発明では、データ部分とタグ部分との一対からなるエントリにより構成される領域（ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ）に加え、データ部分の存在しないタグ部分だけのエントリにより構成される領域（ｄａｔａ−ｌｅｓｓキャッシュ）を持つキャッシュメモリ装置を導入する。
【００１４】
図１は、本発明の原理構成図であり、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１とｄａｔａ−ｌｅｓｓキャッシュ２とからなるキャッシュメモリ装置を示している。
【００１５】
１．キャッシュメモリから追い出されるデータについて：
本手法によれば、データがキャッシュメモリ（ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ）から追い出されるときに、該当データのアドレスやステートをｄａｔａ−ｌｅｓｓキャッシュに記録しておき、例えば、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュに空きが生じたときに、ｄａｔａ−ｌｅｓｓキャッシュに記録しておいた情報（アドレス）に基づきプリフェッチを発行することで、キャッシュメモリから追い出されたデータを再びキャッシュメモリに復帰させることができる。
【００１６】
図２は、本手法の効果を示す図である。図２内のｃｏｎｖｅｎｔｉｏｎａｌキャッシュはＬＲＵ方式で制御される４ｗａｙ  ｓｅｔ−ａｓｓｏｃｉａｔｉｖｅのキャッシュメモリであるとする。
【００１７】
ｉ．ｃｏｎｖｅｎｔｉｏｎａｌキャッシュには、データＡ，Ｂ，Ｃ，Ｄが記録されている。
【００１８】
ii．データＥへのアクセスが発生すると、ＬＲＵ優先度の低いデータＡを追い出し、データＥのｃｏｎｖｅｎｔｉｏｎａｌキャッシュに記録する。同時に、追い出されたデータＡのエントリのタグ部分の情報をｄａｔａ−ｌｅｓｓキャッシュに記録する。
【００１９】
iii ．他プロセッサがデータＥの無効化命令を出したらデータＥを無効化（消去）する。
【００２０】
iv．ｃｏｎｖｅｎｔｉｏｎａｌキャッシュに空きが生じたのにともない、ｄａｔａ−ｌｅｓｓキャッシュに記録してあるアドレス（データＡのアドレス）に対してプリフェッチを発行する。入手したデータ（データＡ）をｃｏｎｖｅｎｔｉｏｎａｌキャッシュに記録する。
【００２１】
ｖ．データＡに対するアクセスが発生すると、データＡはキャッシュメモリに復帰しているのでキャッシュヒットとなる。
従来の手法では、いったんキャッシュメモリから追い出されたデータに対するアクセスはキャッシュミスとなっていた。（図９参照）
しかし、本手法によれば、前述した通り、ｄａｔａ−ｌｅｓｓキャッシュに記録された情報に基づきプリフェッチを発行することにより、追い出されたデータをキャッシュメモリに復帰させることが可能なので、キャッシュメモリから追い出されたデータに対するアクセスをキャッシュヒットにすることができる。
【００２２】
２．他プロセッサからの無効化要求により無効化されるデータについて：
図３に、本発明が適用されるバス結合型並列計算機の構成例を示す。
本手法によれば、データが他プロセッサから無効化されたときに、該当データのアドレスやステートをｄａｔａ−ｌｅｓｓキャッシュに記録しておき、例えば、他プロセッサがｄａｔａ−ｌｅｓｓキャッシュに記録したアドレスのデータを転送したときに、それに便乗してデータを入手し、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュに記録することで、無効化されたデータをキャッシュメモリに復帰させることができる。
【００２３】
図４は、本手法の効果を示す図である。
【００２４】
ｉ．４プロセッサａ，ｂ，ｃ，ｄがデータＡを共有している（各プロセッサのｃｏｎｖｅｎｔｉｏｎａｌキャッシュにデータＡが記録されている）。
【００２５】
ii．プロセッサａがデータＡを更新するためにデータＡの無効化要求を出すと、プロセッサｂ，ｃ，ｄはｃｏｎｖｅｎｔｉｏｎａｌキャッシュに記録してあるデータＡを無効化し、データＡのタグ部分の情報（アドレス）をｄａｔａ−ｌｅｓｓキャッシュに記録する。
【００２６】
iii ．プロセッサｂがデータＡにアクセスすると、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュにデータＡが記録されていないのでキャッシュミスとなり、主記憶（もしくは他キャッシュメモリ）からデータが転送される。プロセッサｃ，ｄは、ｄａｔａ−ｌｅｓｓキャッシュに記録されているアドレスと一致のデータが転送されるのを検出し、このデータ転送に便乗してデータＡを入手し、各々のｃｏｎｖｅｎｔｉｏｎａｌキャッシュに記録する。
【００２７】
iv．次に、プロセッサｃがデータＡにアクセスすると、先のプロセッサｂのデータ転送によりプロセッサｃのｃｏｎｖｅｎｔｉｏｎａｌキャッシュにはデータＡが記録されているのでキャッシュヒットとなる。
【００２８】
ｖ．次に、プロセッサｄがデータＡにアクセスすると、先のプロセッサｂのデータ転送によりプロセッサｄのｃｏｎｖｅｎｔｉｏｎａｌキャッシュにもデータＡが記録されているのでキャッシュヒットとなる。
従来の手法では、キャッシュメモリで無効化されたデータに対するアクセスはキャッシュミスとなっていた（図１０参照）。しかし、本手法によれば、前述した通り、他プロセッサによるデータ転送に便乗してデータを入手することにより、無効化されたデータに対するアクセスをキャッシュヒットにすることができる。
【００２９】
【発明の実施の形態】
以下に本発明を実施例により説明する。
【００３０】
図５は、本発明による第１の実施例のキャッシュメモリ装置１０の構成を示す図である。キャッシュメモリ装置１０は、タグ部分とデータ部分が一対となったエントリを記録する領域であるｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１、タグ部分のみのエントリを記録する領域であるｄａｔａ−ｌｅｓｓキャッシュ１２、キャッシュメモリを制御する部分であるキャッシュコントローラ１３により構成される。また、キャッシュコントローラ１３は、制御管理部１４、プリフェッチ制御部１５、プロセッサインタフェース（ＩＦ）部１６、バスインタフェース（ＩＦ）部１７により構成される。
キャッシュメモリ装置１０は、プロセッサインタフェース（ＩＦ）部１６を介してプロセッサ１８に接続され、バスインタフェース（ＩＦ）部１７を介してシステムバス１９に接続されている。
図５に示すキャッシュメモリ装置１０の動作は以下の通りである。
（動作１）
ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１からデータが追い出されるとき、該当データエントリのタグ部分に記録してあるアドレスとステートをｄａｔａ−ｌｅｓｓキャッシュ１２の該当エントリに記録する。
（動作２）
ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１のエントリに空きが生じたときに、ｄａｔａ−ｌｅｓｓキャッシュ１２の該当エントリに記録してあるアドレスを対象とするプリフェッチを発行し、入手したデータをｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１の当該空きエントリに記録する。プリフェッチの発行は、プリフェッチ制御部１５により制御される。
【００３１】
以上のように動作することで、本実施例のキャッシュメモリ装置１０は、いったんキャッシュメモリ（ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１）から追い出されたデータを再度、キャッシュメモリ（ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１）に記録することができる。
【００３２】
動作１に関しては、操作対象データのアドレスやステートに応じて、ｄａｔａ−ｌｅｓｓキャッシュ１２に記録する／しないを決定する方式を採用することもできる。
【００３３】
また動作２に関しては、操作対象データのアドレスやステート、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１の空き状態等に応じて、プリフェッチを発行する／しないを決定する方式を採用することもできる。
【００３４】
次に、図６は、本発明による第２の実施例のキャッシュメモリ装置１０の構成を示す図である。キャッシュメモリ装置１０は、タグ部分とデータ部分が一対となったエントリを記録する領域であるｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１、タグ部分のみのエントリを記録する領域であるｄａｔａ−ｌｅｓｓキャッシュ１２、キャッシュメモリを制御する部分であるキャッシュコントローラ１３により構成される。また、キャッシュコントローラ１３は、制御管理部１４、バス監視部２０、プロセッサインタフェース（ＩＦ）部１６、バスインタフェ        ース（ＩＦ）部１７により構成される。
キャッシュメモリ装置１０は、プロセッサインタフェース（ＩＦ）部１６を介してプロセッサ１８に接続され、バスインタフェース（ＩＦ）部１７を介してシステムバス１９に接続されている。
システムバス１９には、他のプロセッサノード２１が接続されている。
図６に示すキャッシュメモリ装置１０の動作は以下の通りである。
（動作１）
システムバス１９に接続されている他プロセッサからの無効化要求により、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１に記録してあるデータを無効化するときに、該当データエントリのタグ部分に記録してあるアドレスとステートをｄａｔａ−ｌｅｓｓキャッシュ１２の該当エントリに記録する。
（動作２）
バス監視部２０は、システムバス１９上の信号を監視しており、他プロセッサがシステムバス１９に出したリクエストのアドレスと、ｄａｔａ−ｌｅｓｓキャッシュ１２に記録してあるアドレスとが一致するときに、該当リクエストのデータ転送時に便乗してデータを入手し、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１に記録する。
【００３５】
以上のように動作することで、本実施例のキャッシュメモリ装置１０は、いったんキャッシュメモリ（ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１）で無効化されたデータを再度、キャッシュメモリ（ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１）で有効にすることができる。
【００３６】
動作１に関しては、他プロセッサが出すリクエストの種類、そのリクエストに対するレスポンスの種類、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１に一定以上の空きがあるか否か等に応じて、ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１にデータを記録する／しないを決定する方式を採用することができる。
【００３７】
次に、図７は、本発明による第３の実施例のキャッシュメモリ装置１０の構成を示す図である。キャッシュメモリ装置１０は、タグ部分とデータ部分が一対となったエントリを記録する領域であるｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１、タグ部分のみのエントリを記録する領域であるｄａｔａ−ｌｅｓｓキャッシュ１２、キャッシュメモリを制御する部分であるキャッシュコントローラ１３により構成される。また、キャッシュコントローラ１３は、制御管理部１４、リクエスト変換部２２、プロセッサインタフェース（ＩＦ）部１６、バスインタフェース（ＩＦ）部１７により構成される。
キャッシュメモリ装置１０は、プロセッサインタフェース（ＩＦ）部１６を介してプロセッサ１８に接続され、バスインタフェース（ＩＦ）部１７を介してシステムバス１９に接続されている。
システムバス１９には、他のプロセッサノード２１が接続されている。
図７に示すキャッシュメモリ装置１０の動作は以下の通りである。
（動作１）
ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ１１からデータが追い出されるか、もしくは無効化されるときに、該当データエントリのタグ部分に記録してあるアドレスとステートおよび追い出し理由（Ｅｖｉｃｔｅｄ  ｏｒ  Ｉｎｖａｌｉｄａｔｅｄ）をｄａｔａ−ｌｅｓｓキャッシュ１２の該当エントリに記録する。
（動作２）
ｄａｔａ−ｌｅｓｓキャッシュ１２に記録してあるエントリで、ステートがＭｏｄｉｆｉｅｄであり、かつ追い出し理由がＩｎｖａｌｉｄａｔｅｄであるアドレスに対して、プロセッサからリードアクセスが発生したときに、通常であればシステムバス１９にリード要求を出すところであるが、それに代えて排他的リード要求を出す。
【００３８】
データを更新する場合、システムバス１９にリード要求を出し、それに続いてシステムバス１９に無効化要求を出すことが多い。この場合、システムバス１９に出すリクエストは２つである。本実施例のキャッシュメモリ装置１０を用いると、更新される可能性の高い（過去に更新されたことのある）データに対するリード要求を排他的リード要求にしてシステムバス１９に出すため、その後に続く無効化要求をシステムバス１９に出す必要がない。つまり、システムバス１９に出すリクエスト数を減らすことができる。
【００３９】
上記した図５〜図７に示す第１〜第３の実施例は、それぞれ、プリフェッチ制御部１５、バス監視部２０、リクエスト変換部２２を個別に持つものであるが、これらのうちの任意の２つの機能を併せ持つ構成、あるいは３つの機能をすべて兼ね備える構成は、必要に応じて適宜に採用することができる。
【００４０】
（付記１）  データを記録するデータ部と当該データのアドレスおよびステートを記録するタグ部とが一対となって含まれる複数のエントリで構成される第１のキャッシュ部と、
データ部を含まず、タグ部のみを含む複数のエントリで構成される第２のキャッシュ部とからなることを特徴とするキャッシュメモリ装置。
【００４１】
（付記２）  前記第１のキャッシュ部に記録されていたデータが追い出されたときに、当該エントリのタグ部に記録されていた情報の全てもしくはその一部を前記第２のキャッシュ部に記録することを特徴とする付記１に記載のキャッシュメモリ装置。
【００４２】
（付記３）  前記第１のキャッシュ部に記録されていたデータが追い出されるときに、当該エントリのタグ部に記録されていた情報の全てもしくはその一部に加えて、当該データが追い出された理由を示す情報を前記第２のキャッシュ部に記録することを特徴とする付記１に記載のキャッシュメモリ装置。
【００４３】
（付記４）  当該キャッシュメモリ装置はバス結合型並列計算機システムにおいて使用されるものであって、他プロセッサがバスにリクエストを出したときに、当該リクエストのアクセス対象アドレスを、前記第２のキャッシュ部に記録することを特徴とする付記１から付記３のいずれかに記載のキャッシュメモリ装置。
【００４４】
（付記５）  前記第２のキャッシュ部に記録されているアドレスのデータを入手したときに、当該データを前記第１のキャッシュ部に記録することを特徴とする付記１から付記４のいずれかに記載のキャッシュメモリ装置。
【００４５】
（付記６）  前記第２のキャッシュ部に記録されているアドレスに対してプリフェッチを発行し、当該アドレスのデータを入手することを特徴とする付記１から付記５のいずれかに記載のキャッシュメモリ装置。
【００４６】
（付記７）  当該キャッシュメモリ装置はバス結合型並列計算機システムにおいて使用されるものであって、前記第２のキャッシュ部に記録してあるアドレスに対して他プロセッサがバスリクエストを出したときに、当該バスリクエストのデータ転送時に便乗してデータを入手することを特徴とする付記１から付記６のいずれかに記載のキャッシュメモリ装置。
【００４７】
（付記８）  当該キャッシュメモリ装置はバス結合型並列計算機システムにおいて使用されるものであって、前記第２のキャッシュ部に記録してあるアドレスに対してプロセッサからのアクセスが発生したときに、当該アドレスのエントリに記録してある情報に応じて、バスに出すリクエストの種類を決定することを特徴とする付記１から付記７のいずれかに記載のキャッシュメモリ装置。
【００４８】
（付記９）  前記第２のキャッシュ部に記録してあるアドレスに対してプロセッサからのアクセスが発生したときに、当該アドレスのエントリに記録してある情報に応じて、当該アクセスにより新規に前記第１のキャッシュ部に記録されるエントリのタグ部分の値を決定することを特徴とする付記１から付記８のいずれかに記載のキャッシュメモリ装置。
【００４９】
（付記１０）  当該キャッシュメモリ装置はバス結合型並列計算機システムにおいて使用されるものであって、前記第２のキャッシュ部に記録してあるアドレスに対して他プロセッサがバスリクエストを出したときに、当該アドレスのエントリに記録してある情報に応じて、当該バスリクエストに対する応答を決定することを特徴とする付記１から付記９のいずれかに記載のキャッシュメモリ装置。
【００５０】
（付記１１）  前記第１のキャッシュ部に記録されていたデータが追い出された理由を示す情報として、キャッシュの容量性に起因する情報と他プロセッサからの無効化要求に起因する情報とが含まれることを特徴とする付記３に記載のキャッシュメモリ装置。
【００５１】
（付記１２）  前記第２のキャッシュ部に記録してあるアドレスに対してプロセッサからのリードアクセスが発生したときに、当該アドレスのエントリに記録してある情報の内容が、ステートがＭｏｄｉｆｉｅｄでありかつ追い出し理由がＩｎｖａｌｉｄａｔｅｄであるとき、リード要求に代えて排他的リード要求をバスに出すことを特徴とする付記８に記載のキャッシュメモリ装置。
【００５２】
【発明の効果】
本発明のキャッシュメモリ装置は、従来方式ではキャッシュミスとなるキャッシュメモリから追い出されたデータや他プロセッサからの無効化要求よりキャッシュメモリから無効化されたデータに対するアクセスを、キャッシュヒットにすることができる。具体的には、過去にキャッシュメモリに記録されていたデータのタグ部分を記録するｄａｔａ−ｌｅｓｓキャッシュを導入し、ｄａｔａ−ｌｅｓｓキャッシュに記録された情報に基づいて、キャッシュメモリの空きエントリにデータを記録する。これにより、キャッシュメモリの容量をより有効に使うことが可能となり、その結果としてシステム性能が向上する。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】本発明における、キャッシュメモリから追い出されたデータへのアクセスを示す図である。
【図３】本発明が適用されるバス結合型並列計算機の構成例を示す図である。
【図４】本発明における、無効化されたデータへのアクセスを示す図である。
【図５】本発明による第１の実施例のキャッシュメモリ装置の構成を示す図である。
【図６】本発明による第２の実施例のキャッシュメモリ装置の構成を示す図である。
【図７】本発明による第３の実施例のキャッシュメモリ装置の構成を示す図である。
【図８】キャッシュメモリに新たなデータを記録するときの様子を示す図てある。
【図９】キレッシュメモリから追い出されたデータへのアクセスを示す図である。
【図１０】無効化されたデータへのアクセスを示す図である。
【図１１】外部共有キャッシュメモリを有する計算機システムの構成例を示す図である。
【符号の説明】
１        ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ
２        ｄａｔａ−ｌｅｓｓキャッシュ
１０      キャッシュメモリ装置
１１      ｃｏｎｖｅｎｔｉｏｎａｌキャッシュ
１２      ｄａｔａ−ｌｅｓｓキャッシュ
１３      キャッシュコントローラ
１４      制御管理部
１５      プリフェッチ制御部
１８      プロセッサ
１９      システムバス
２０      バス監視部
２２      リクエスト変換部
-
【図１】
0004742432.tif 000002
【図２】
0004742432.tif 000003
【図３】
0004742432.tif 000004
【図４】
0004742432.tif 000005
【図５】
0004742432.tif 000006
【図６】
0004742432.tif 000007
【図７】
0004742432.tif 000008
【図８】
0004742432.tif 000009
【図９】
0004742432.tif 000010
【図１０】
0004742432.tif 000011
【図１１】
0004742432.tif 000012