(57)【特許請求の範囲】
【請求項１】
キャッシュフィルタリングの方法であって、
キャッシュミスに関して、所与のメモリ参照に対するロウヒット/ミス信号を取得するステップと、
前記ロウヒット/ミス信号がロウミスを示している場合に、前記ロウヒット/ミス信号に関連する前記メモリ参照を破棄し、ランダムアクセスモードを使用してメモリ内のデータにアクセスするとともに、前記データのみをレジスタファイルに転送するステップと
を含み、
前記ロウヒット/ミス信号は、前記所与のメモリ参照がラッチされているアクティブな領域に対応するか否かを示す方法。
【請求項２】
前記ロウヒット/ミス信号がロウヒットを示している場合に、前記ロウヒット/ミス信号に関連する前記メモリ参照を、メモリキャッシュに転送して、前記メモリ参照でキャッシュメモリを更新するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記転送するステップは、レベル1キャッシュおよびレベル2キャッシュの両方を、前記メモリ参照で更新するステップを含む、請求項2に記載の方法。
【請求項４】
ダイナミックランダムアクセスメモリ(DRAM)内のキャッシュフィルタリングの方法であって、
メモリ参照に対応するロウヒット/ミス信号を生成するステップと、
レベル1(L1)およびレベル2(L2)のキャッシュミスと、前記ロウヒット/ミス信号がロウミスを示すこととが発生した場合に、前記ロウヒット/ミス信号に関連する前記メモリ参照を破棄し、ランダムアクセスモードを使用して前記DRAM内のデータにアクセスし、前記データに対応するロウをラッチするとともに前記データのみをレジスタファイルに転送するステップと、
を含み、
前記ロウヒット/ミス信号は、前記メモリ参照がラッチされているアクティブな領域に対応するか否かを示す方法。
【請求項５】
L1およびL2のキャッシュミスと、前記ロウヒット/ミス信号がロウヒットを示すこととが発生した場合に、
オープンページモードを使用して前記DRAM内のデータにアクセスするステップと、
前記ロウヒット/ロウミス信号に関連する前記メモリ参照を、メモリキャッシュに転送して、前記メモリ参照でL1およびL2キャッシュを更新するステップと、
前記データに対応する前記ロウをアクティブに維持するステップと
をさらに含む、請求項4に記載の方法。
【請求項６】
データを処理する装置であって、
複数のロケーションを有するメモリと、
前記メモリに結合されたメモリコントローラとを備え、前記メモリコントローラは、前記複数のロケーションの1つに関係するメモリ参照に対応するロウヒット/ミス信号を生成する少なくとも1つの比較器を備え、
前記装置は、
前記メモリコントローラとプロセッサのメモリキャッシュに動作可能に結合された、少なくとも1つのデマルチプレクサを備え、前記ロウヒット/ミス信号がロウミスを示している場合に、前記ロウヒット/ミス信号に関連する前記メモリ参照を破棄し、ランダムアクセスモードを使用して得られた、データのみをレジスタファイルに転送するように、前記ロウヒット/ミス信号が、前記デマルチプレクサにより、に使用され、
前記装置は、
前記データに対応するロウをラッチするロウラッチを備え、
前記ロウヒット/ミス信号は、前記メモリ参照がラッチされているアクティブな領域であるか否かを示す装置。
【請求項７】
前記ロウヒット/ミス信号がロウヒットを示している場合には、前記ロウヒット/ミス信号に関連する前記メモリ参照を、プロセッサのメモリキャッシュに転送するように、前記ロウヒット/ミス信号が、前記デマルチプレクサにより、さらに使用される、請求項６に記載の装置。
【請求項８】
前記メモリキャッシュは、プロセッサのレベル1(L1)キャッシュおよびレベル2(L2)キャッシュを含み、前記少なくとも1つのデマルチプレクサは、前記プロセッサのレベル1(L1)キャッシュおよびレベル2(L2)キャッシュの両方と動作可能に結合される、請求項6に記載の装置。
【請求項９】
前記プロセッサのL1命令キャッシュと動作可能に結合された第2のデマルチプレクサをさらに備え、前記ロウヒット/ミス信号は、前記第2のデマルチプレクサにより、前記メモリ参照に関係する命令を送るように使用されるとともに、別のロウラッチが、命令ロウアドレスに対応するロウをラッチする、請求項8に記載の装置。
【請求項１０】
前記メモリは、ダイナミックランダムアクセスメモリ(DRAM)である、請求項6から9のいずれか１項に記載の装置。
【請求項１１】
前記メモリは、スタティックランダムアクセスメモリ(SRAM)である、請求項6から9のいずれか１項に記載の装置。
【請求項１２】
前記メモリキャッシュは、プロセッサのレベル1(L1)キャッシュおよびレベル2(L2)キャッシュを含み、前記少なくとも1つのデマルチプレクサは、前記プロセッサのレベル2(L2)キャッシュとは関係なく、前記プロセッサのレベル1(L1)キャッシュのみと動作可能に結合される、請求項6に記載の装置。
【請求項１３】
前記メモリは、ダイナミックランダムアクセスメモリ(DRAM)である、請求項12に記載の装置。
【請求項１４】
前記メモリは、スタティックランダムアクセスメモリ(SRAM)である、請求項12に記載の装置。
【請求項１５】
スタティックランダムアクセスメモリ(SRAM)内のキャッシュフィルタリングの方法であって、
メモリ参照に対応するロウヒット/ミス信号を生成するステップと、
レベル1(L1)およびレベル2(L2)のキャッシュミスと、前記ロウヒット/ミス信号がロウミスを示すこととが発生した場合に、前記ロウヒット/ミス信号に関連する前記メモリ参照を破棄し、ランダムアクセスモードを使用して前記SRAM内のデータにアクセスし、前記データに対応するロウをラッチし、前記データのみをレジスタファイルに転送するステップと
を含み、
ロウヒット／ミス信号は、前記メモリ参照がラッチされているアクティブな領域に対応するか否かを示す方法。
【請求項１６】
L1およびL2のキャッシュミスと、前記ロウヒット/ミス信号がロウヒットを示すこととが発生した場合に、
オープンページモードを使用して前記SRAM内のデータにアクセスするステップと、
前記メモリ参照でL1およびL2キャッシュを更新するステップと、
前記データに対応する前記ロウをアクティブに維持するステップと
をさらに含む、請求項15に記載の方法。
【請求項１７】
スタティックランダムアクセスメモリ(SRAM)を含むシステムであって、
メモリ参照に対応するロウヒット/ミス信号を生成する手段と、
前記ロウヒット/ミス信号に関連する前記メモリ参照を破棄する手段と、
ランダムアクセスモードを使用して前記SRAM内のデータにアクセスする手段と、
前記データに対応するロウをラッチする手段と、
前記データのみをレジスタファイルに転送する手段と
を備え、
前記ロウヒット/ミス信号は、前記メモリ参照がラッチされているアクティブな領域であるか否かを示し、
前記破棄する手段、前記アクセスする手段、前記ラッチする手段、および前記データを転送する手段が、(1)レベル1(L1)およびレベル2(L2)のキャッシュミスと、(2)前記ロウヒット/ミス信号がロウミスを示すこととが発生した場合に、破棄、アクセス、ラッチ、および転送をそれぞれ実行するシステム。
【請求項１８】
前記ロウヒット/ミス信号に関連する前記メモリ参照を、前記L1およびL2のキャッシュに転送するための手段と、
前記メモリ参照で前記L1およびL2のキャッシュを更新する手段をさらに備え、
(1) L1およびL2のキャッシュミスと、
(2)前記ロウヒット/ミス信号がロウヒットを示すことと
が発生した場合、前記メモリ参照を転送する手段、および更新する手段は、転送および更新をそれぞれ実行する、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、メモリおよび処理に関する。より詳細には、本発明は、キャッシュフィルタリングのための方法および装置に関する。
【背景技術】
【０００２】
特に、コンピュータ処理およびメモリシステムの技術分野においては、プロセッサとメインメモリとの間の速度ギャップが増大してきた。このギャップは、直接には、コンピューティングシステム全体の性能に影響を与える。この性能面の懸念を軽減するために、コンピューティングシステムには、キャッシュ機構が組み込まれ、これらのコンピューティングシステムは、この速度ギャップを克服するために、このキャッシュ機構に依存している。この速度ギャップを克服するという点で、そのようなキャッシュ機構がうまく機能するかは、サイズ、ブロックサイズ、および結合性(associativity)などのパラメータにより変わる。しかしながら、そのようなキャッシュ機構では、これらのパラメータを変更することにより、性能を継続的に向上させることはできない。というのは、そのようにすることで、当然のように増大するシステムの複雑性、消費電力およびキャッシュ自体の動作が、収量漸減点(point of diminishing returns)に到達するためである。
【０００３】
既存のキャッシング機構は、一般には、キャッシングを効果的にするために、参照の空間的局所性および時間的局所性に依存する。しかしながら、マルチメディアアプリケーションなどの一部の場合では、局所性が制限され、メインメモリの性能により依存している。また、C、C++、およびオブジェクト指向プログラミングで記述されたアプリケーションでは、利用可能なメモリ空間にデータを配置するために、動的に割り当てられるデータ構造を使用する。そのようなデータは、メモリ内に散乱する場合があるので、そのために、空間的局所性を欠いている。これらのアプリケーションでのデータ要素は、十分に適時であるほどにはすぐに再利用されない場合があり、したがって、時間的局所性もまた欠いている。これらのタイプのコンピューティングアプリケーションでの、空間的局所性および時間的局所性の欠如により、従来のキャッシュ機構は、より効果的でなくなる。
【０００４】
メモリシステムにおいては、空間的局所性および時間的局所性を欠くものの多数回使用される参照は、キャッシュ内に取得したものの一度も再使用されない参照よりも、キャッシュ内に保存することがより重要である。再使用されないキャッシュされた参照は、他のより頻繁に使用される参照と競合するために、望ましくない。同様に、空間的局所性および時間的局所性は不十分でありながら、その使用頻度は十分である参照は、除去または置換すべきではない。
【０００５】
一般には、そのようなキャッシュ機構の改善が、一部のアプリケーションでは、存続していない可能性がある参照の局所性を利用することにより、実現されてきた。非常に頻繁に、このことが、キャッシュのサイズもしくは結合性を増加させること、メモリ階層の余分なレベルを設けること、またはプリフェッチバッファを設けることにより、キャッシュ内により多くの参照を保存するための、余分なハードウェアの追加的なコストで達成されている。
【０００６】
したがって、キャッシュ機構は、プロセッサの速度とメインメモリの速度との間の増大するギャップ、および一部のアプリケーションでの局所性の欠如により、より効果的でなくなってきている。キャッシュの限界、およびキャッシュミスペナルティの継続的な増大に対処するため、データが必要となる前に、あらかじめメインメモリからデータをフェッチするための、ハードウェアおよびソフトウェアのプリフェッチスキーム(pre-fetching scheme)が、使用されてきた。そのようなプリフェッチの方法は、一部のアプリケーションで見られる定期的なアクセスパターンに対しては有用であるが、そのような方法は、現代および将来のプロセッサでは数百サイクルに延びる場合がある、非常に長いキャッシュミスのレイテンシを隠すことはできない。
【０００７】
選択的な割当てにより、1次メモリキャッシュ(すなわち、レベル1またはL1キャッシュ)をより良好に管理するための、別の方法が提案されてきた。これらの選択的な割当ての仕組みでは、キャッシュはスタティックに区分され、それにより、キャッシュのブロックが、それらの空間的局所性および時間的局所性に基づいて、異なるサブキャッシュに割り当てられる。しかしながら、これらの方法は、アクセスパターンがパーティショニングに適合しない場合、実行性能が悪くなることがあるという点で、問題を抱えている。
【０００８】
マルチレベルキャッシュで、L1キャッシュの性能を向上させるために、最も頻繁に使用される参照をより高いレベルのキャッシュに移動させるように、参照の使用頻度を利用する他の方法が提案されてきた。しかしながら、この手法は、小さなL1キャッシュを備えるシステムに対しては適しているが、L1キャッシュのサイズおよび結合性が増大する場合は、より効果的でなくなる。
【０００９】
第1レベルキャッシュに有用で投機的なメモリ参照をもたらすように、第1レベルキャッシュをフィルタとして使用する、さらに別の方法が提案されてきた。しかしながら、この手法は、限定的な性能の向上をもたらす一方で、不利には、参照の有用性を予測するために、ハードウェアのコストを増大させる。
【００１０】
したがって、高価で追加的なハードウェアに依存せず、大きなメモリキャッシュを取り扱うことができる、コスト的に効果的な方法で、現代のメモリシステムと、コンピュータプロセッサとの間の速度ギャップを克服する、キャッシュ機構が提供されることが望ましい。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、これまでのキャッシュ機構の少なくとも1つの欠点を除去または軽減することである。
【００１２】
本明細書では、メモリ参照の動作の分析により、多数回使用される参照はほとんどなく、多くの参照は、決して2回以上使用されないことが理解された。さらに、2回以上使用されるアドレスの数は、1回以上使用されるアドレスの数のおよそ半分であることが見出された。このことは、従来のキャッシュに転送されるアドレスの半分は、一度も使用されないということを意味する。それらは、貴重なプロセッサおよびメモリのバス時間を使用して、メインメモリからキャッシュに転送される。さらに、キャッシュ内で一度も使用されない参照が、頻繁に使用される参照と競合し、それらを移動させる可能性がある。したがって、キャッシュ内に、より頻繁に使用される参照を保存し、使用される頻度がより少ない参照を破棄する(reject)ことは有用である。
【課題を解決するための手段】
【００１３】
一般には、本発明の実施形態は、DRAMのオープンロウに対する参照の動作を監視することにより、キャッシュの動的管理に備えるものである。DRAM内のデータは、プロセッサのプリフェッチスキームまたはキャッシングの影響を受けない。キャッシュ内にデータを有するとき、それらの局所性は、限定されたサイズのデータのみが、所与の時間に、キャッシュに転送されるために変化する。キャッシュ内のデータの動作を使用する、既存の仕組みは、プロセッサによる影響を受け、それらの範囲はキャッシュの付近に限定される。したがって、キャッシュの限界はキャッシュ自体から解決することはできず、むしろキャッシュの外部に目を向けなければならないことが明らかになる。本発明の実施形態は、システムの複雑性を増大させずに、キャッシュ性能を向上させるための新しい手法を提供する。これは、メインメモリでの参照の動作、およびそれらの使用頻度を利用することにより、可能になる。
【００１４】
本発明の実施形態は、1回使用されるアドレスの破棄に備えるものであり、それにより、キャッシュのコンフリクトおよび有用なブロックの排除(eviction)が低減される。ミスペナルティもまた、破棄される参照のためのキャッシュブロック全体の転送時間が削減されるために、減少する。本発明の実施形態は、プロセッサのレジスタに対しての、それが参照をキャッシュから破棄する場合の、1ワードの転送に備えるものである。典型的なマルチコアチップでは、メモリバスの利用に対する需要が増大し、それがシステムの拡張可能性を制限している。本発明の実施形態は、1回だけ使用される参照のための、プロセッサへの長いキャッシュブロックの転送を除去することにより、バスの利用の削減に備えるものである。
【００１５】
第1の態様では、本発明は、キャッシュフィルタリングの方法であって、キャッシュミスに関して、所与のメモリ参照に対するロウヒット/ミス信号を取得するステップと、ロウヒット/ミス信号がロウミスを示している場合に、ロウヒット/ミス信号に関連するメモリ参照を破棄するステップとを含む方法を提供する。
【００１６】
さらなる実施形態では、ダイナミックランダムアクセスメモリ(DRAM)内のキャッシュフィルタリングの方法であって、メモリ参照に対応するロウヒット/ミス信号を生成するステップと、レベル1(L1)およびレベル2(L2)のキャッシュミスと、ロウヒット/ミス信号がロウミスを示すこととが発生した場合に、DRAM内のデータにアクセスするとともに、対応するロウラッチ内にロウアドレスをラッチするステップとを含む方法が提供される。
【００１７】
さらなる実施形態では、本発明は、データを処理する装置であって、複数のロケーションを有するメモリと、メモリに結合され、複数のロケーションの1つに関係するメモリ参照に対応するロウヒット/ミス信号を生成する、少なくとも1つの比較器を備えるメモリコントローラと、メモリコントローラに動作可能に結合される、少なくとも1つのデマルチプレクサであって、ロウヒット/ミス信号は、このデマルチプレクサにより、メモリ参照に関係するデータを伝送するように使用される、デマルチプレクサと、データに対応するロウをラッチするためのロウラッチとを備える装置を提供する。
【００１８】
さらなる実施形態では、スタティックランダムアクセスメモリ(SRAM)内のキャッシュフィルタリングの方法であって、メモリ参照に対応して、ロウヒット/ミス信号を生成するステップと、レベル1(L1)およびレベル2(L2)のキャッシュミスと、ロウヒット/ミス信号がロウミスを示すこととが発生した場合に、SRAM内のデータにランダムアクセスモードを使用してアクセスするとともに、データに対応するロウをラッチするステップとを含む方法が提供される。
【００１９】
本発明の他の態様および特徴は、添付図面とともに本発明の例の実施形態の下記の説明を検討すれば、通常の当業者には明白となるであろう。
【００２０】
本発明の実施形態は、単に例として、添付図面を参照して、以下に説明されることになる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施形態に関連して使用される、ダイナミックランダムアクセスメモリ(DRAM)、およびDRAMコントローラ内のロウラッチを示すブロック図である。
【図２】プロセッサ、DRAM、およびDRAMコントローラを含むシステムに対する、ならびに本発明の実施形態を示すブロック図である。
【図３】図2で明らかにしたDRAMコントローラに関する、本発明の実施形態によるブロック図である。
【図４】ロウヒットを示すロウ信号に基づく、データ転送を示す図である。
【図５】ロウミスを示すロウ信号に基づく、データ転送を示す図である。
【図６】本発明の実施形態による、キャッシュのフィルタリングの方法の実施形態を示すフローチャートである。
【図７】所与のバンク内、および本発明の実施形態が適用可能なシステム内に、複数のアクティブな部分行(active partial row)を有するシステムの説明図である。
【図８】図7に類似する、ただしシステムは適応可能な領域の変化を含む説明図である。
【図９】命令キャッシュおよびデータキャッシュに関して、本発明の別の実施形態を示すブロック図である。
【図１０】L1データキャッシュに関して、本発明のさらに別の実施形態を示すブロック図である。
【図１１】図10による、キャッシュのフィルタリングの方法の実施形態を示すフローチャートである。
【図１２】クローズドページのDRAMポリシー(closed page DRAM policy)による、キャッシュのフィルタリングの方法の別の実施形態を示すフローチャートである。
【図１３】ベンチマークのトレース(trace)とそれらのアドレス使用の平均との関係のグラフである。
【図１４】図13で識別され、従来のシステム内で使用されるベンチマークのトレースに対するL1のミス率を、本発明の実施形態による、キャッシュのフィルタリングを使用するシステムと比較した、比較のグラフである。
【図１５】図13で識別され、従来のシステム内で使用されるベンチマークのトレースに対するL2のミス率を、本発明の実施形態による、キャッシュのフィルタリングを使用するシステムと比較した、比較のグラフである。
【図１６】図13で識別され、従来のシステム内で使用されるベンチマークのトレースに対するDRAMのロウヒット率(row hit rate)を、本発明の実施形態による、キャッシュのフィルタリングを使用するシステムと比較した、比較のグラフである。
【図１７】図13で識別され、従来のシステム内で使用されるベンチマークのトレースに対する性能を、本発明の実施形態による、キャッシュのフィルタリングを使用するシステムと比較した、比較のグラフである。
【図１８】図13で識別され、異なるL2のキャッシュサイズ内で平均され、従来のシステム内で使用されるベンチマークのトレースに対する性能を、本発明の実施形態による、キャッシュのフィルタリングを使用するシステムと比較した、比較のグラフである。
【図１９】図13で識別され、異なるバンク数内で平均され、従来のシステム内で使用されるベンチマークのトレースに対する性能を、本発明の実施形態による、キャッシュのフィルタリングを使用するシステムと比較した、比較のグラフである。
【図２０】図13で識別され、対でインターリーブされ、従来のシステム内で使用されるベンチマークのトレースに対する性能を、本発明の実施形態による、キャッシュのフィルタリングを使用するシステムと比較した、比較のグラフである。
【発明を実施するための形態】
【００２２】
本発明の実施形態は、例示的な実施形態において、システムの複雑性を増大させることなく、使用される頻度がより少ない参照をキャッシュから破棄するために、ダイナミックランダムアクセスメモリ(DRAM)のアクティブロウを使用することにより、性能を向上させる、キャッシュのフィルタリングの方法および装置を提供する。
【００２３】
本発明のキャッシュフィルタの方法および装置は、DRAMをベースとするメモリシステムであるものとするが、スタティックランダムアクセスメモリ(SRAM)、または、本発明の少なくとも一部の実施形態の意図される範囲から逸脱することなく、他の任意のタイプの適した記憶装置もまた使用することができるということを理解されたい。
【００２４】
図に関して説明がなされる、以下の例は、本発明による一実施形態を説明かつ図示するために与えられ、本発明を利用する、従来のDRAMをベースとするメインメモリシステムに関して詳述される。
【００２５】
図1は、DRAM、およびDRAMコントローラ内の行ラッチに関するブロック図を示す。DRAMは、バンク0〜バンク31として示される、32のバンクからなるマルチバンクシステムを使用するものとする。各バンクは、1024の行(ロウ)(すなわち、r0〜r1023)を有し、各行は、1024の列(すなわち、c0〜c1023)を有する。DRAM全体の記憶域は、32Mワードである。各ワードは、4バイトであるとし、それにより、全体のDRAMサイズ=128MBとなる。プロセッサのアドレス(A26〜A0)は、128MBの記憶域内の任意のバイトにアクセスするために使用される。
【００２６】
プロセッサのアドレスは、バンク、行、列、およびバイトの選択により、単一のロケーションを選択するために使用される。バンクの選択は、アドレスA16〜A12と関係し、32のバンクから1つのバンクを選択するために使用される。行の選択は、アドレスA26〜A17と関係し、アクセスされるバンクで、1024の行から1つの行を選択するために使用される。各バンクは、オープンページポリシーが使用されている場合は、一度に1つの行をアクティブに維持することができる。本発明の実施形態による、キャッシュのフィルタリングは、DRAMコントローラの行ラッチ内に、各バンクの最新のアクセスされた行を格納することにより、クローズドページポリシーを使用することができることに留意することは重要である。行720がバンク0でアクセスされるものとし、行566がバンク31でアクセスされるものとする。列の選択は、アドレスA11〜A2と関係し、アクセスされる行で、1024から1つの列を選択するために使用される。バイトの選択は、アドレスA1〜A0と関係し、アクセスされる列および行で、4バイトのワードから1バイトを選択するために使用される。
【００２７】
典型的な大多数のキャッシュ機構と同様に、本発明の実施形態は、DRAMでより高速の列アクセスを利用するために、オープンページ(OP)ポリシーを使用する。1つのアクティブ行を、各バンクでラッチしなければならない。したがって、必要なラッチの数は32に等しい。各ラッチは、ある行がDRAMでアクティブにされるごとに、10ビットのアドレス(A26〜A17)を格納する。これらのラッチは、DRAMコントローラ内で実施される。この例では、最初の行ラッチは、720である、バンク0でのアクティブ行のアドレスを格納する。最後の行ラッチは、566である、バンク31でのアクティブ行のアドレスを格納する。これらのラッチに対するこれらの入力は、すべてプロセッサのアドレスA26〜A17に接続している。各行ラッチは、固有の行アドレスをラッチするために、各DRAMバンクに対応する、デコードされたRAS信号によりクロックされる。これらのRAS信号は、任意の従来のオープンページDRAM型式でのように、行がアクティブになるときに、各ラッチに、そのアクセスされる行を格納させるクロック信号として動作する。
【００２８】
図2は、本発明を使用するシステムに関するブロック図を示す。図2を参照すると、プロセッサ200は、レベル1(L1)キャッシュ27A、27Bおよびレベル2(L2)キャッシュ28を含む。L2キャッシュ28は、統合キャッシュである。L1キャッシュ27Aは、命令バス26を介して情報を受信する、命令のための部分であり、キャッシュ27Bは、データバス25を介して情報を受信する、データのための部分である。命令バス26は、命令レジスタ21と関連している。マルチバンクDRAM202は、オープンページポリシーで使用される。DRAMバンクは、ロウヒット率を上昇させるために、ページがインターリーブされている。DRAMコントローラ201は、プロセッサ200からのメモリ要求を受信し、DRAM202にアクセスするために、列アドレスストローブ(Column Address Strobe)(CAS)信号および行アドレスストローブ(Row Address Strobe)(RAS)信号を生成する。DRAMコントローラ201は、現在のメモリ要求の行アドレスを、ラッチされているアクティブ行のアドレスと比較し、一致がある場合には、ロウヒットの指示を与える。DRAM202内のロケーションに対する最初のアクセスは、ロウミスの指示を生成する。次いで、DRAMコントローラ201は、アクセスされた行を、それをアクティブに維持するためにラッチする。同じメモリバンクに対する次のアクセスが同じアドレスである場合、ロウヒットであることになる。
【００２９】
一般には、本発明の実施形態では、比較器により、DRAMの参照が以前に使用されたかどうかを判定するために、ロウヒット信号を使用する。行比較器の信号がミスである場合、これは、DRAM内のそのロケーションに対する最初のアクセスであるか、または、この行が、そのロケーションが使用されていないため、もしくは別のロケーションに対する介入アクセスのために、非アクティブにされていたということかのいずれかである。行比較器の信号がヒットである場合、本発明の実施形態により、参照されたデータの、L1キャッシュおよびL2キャッシュへの転送が可能になり、本発明の実施形態により、ロウミスを生成する参照を破棄することで、キャッシュ内に許される参照の数が削減される。これにより、ロウミスでは、ただ1つのワードがレジスタファイル22に転送されるので、プロセッサに対するデータの転送時間が短縮される。対照的に、従来のキャッシュでは、ブロック全体が、ロウヒットおよびロウミスの両方の際に、キャッシュに転送される。
【００３０】
図3は、上述した比較器の使用方法を詳述する、図2で明らかにしたDRAMコントローラ201、プロセッサ200、およびDRAM202に特に関する、ブロック図を示す。ここで、DRAMコントローラ201は、バンク0の行ラッチ31-1からバンク31の行ラッチ31-32を含む行ラッチとともに示される。行ラッチは、上述したように、アクセスされるバンクのアクティブ行をラッチするために使用される。本発明の実施形態はまた、現在のプロセッサのアクセスがアクティブ行内であるかどうかを判定するように、現在のプロセッサのアドレスを、DRAM202内のアクセスされるバンクに対するラッチされた行と比較するために、1つ1つが各行ラッチ31-1〜31-32に対してのものである、行比較器30-1〜30-32を使用する。現在のアクセスされるバンクに対する比較器の出力のみが、考慮される。他の比較器の出力は、バンクアドレスデコーダ(図示せず)により不能にされる。比較器30-1〜30-32は、判定結果を示す出力信号を供給する。比較器の出力信号に応答して、ORゲート33は、アクセスされるバンクでロウヒット(すなわち、プロセッサのアドレスA26〜A17とラッチされた行との一致)がある場合、=1であるROW HIT/MISS信号を出力する。比較器30-1〜30-32は、プロセッサのアドレスのビットA26〜A17を、アクセスされるバンクに対するラッチされた行と比較する。現在のプロセッサの行アドレスが、ラッチされた行と一致しない場合、比較器33は、ROW HIT/MISS = 0を出力し、ひいてはミスを示す。このように、DRAMコントローラ201は、同じ行に対して次に起こり得るアクセスのために、対応するバンクのラッチ内に、現在のアクセスされる行をラッチする。
【００３１】
DRAMコントローラ201はまた、本発明の実施形態によるキャッシュのフィルタリングの方法および装置により要求されるように、プロセッサのキャッシュに対して現在のメモリ参照を受け入れるか、それとも破棄するかを決定するために、プロセッサ200に対してROW HIT/MISS信号を供給する。DRAMコントローラ201は、プロセッサのアドレスおよび制御信号を使用することにより、任意の従来のシステムと同様に、アクセスすべきDRAM202に関する、適切な行アドレス、列アドレスおよびその他の制御信号(例えば、RAS、CASなど)を生成する。
【００３２】
さらに図2に関して、プロセッサ200は、DRAMコントローラ201から生成されるROW HIT/MISS信号24を検査し、データをキャッシュまたはレジスタファイル22に伝送するために、デマルチプレクサ23を使用する。プロセッサ200はまた、データ転送のサイズを満たすために、データ転送のために必要なタイミングを調節する。プロセッサ200は、通常は複数のワードからなるキャッシュブロックを転送するが、任意の従来のシステムと同様に、データをキャッシュ内に受け入れる場合は、複数のプロセッサのバスサイクルを必要とする。DRAM202からの参照が、使用される頻度がより少ないために、破棄される場合、本発明の実施形態によれば、プロセッサは、レジスタファイル22に対して直接1ワードを転送するため、1サイクルのみを必要とする。
【００３３】
図4は、従来のシステムと同じバスタイミングである、ROW HIT/MISS信号がヒットである場合の、プロセッサ400とDRAM410との間の、データバス420に沿ったデータ転送のタイミングを示す。プロセッサ400は、DRAM410内のブロック全体を、L1キャッシュおよびL2キャッシュに転送する必要がある。ここで、L1キャッシュ401はブロック401aを含み、L2キャッシュ402はブロック402aを含む。DRAM410に示されるブロックサイズは、32ワードであるものとするため、データバス420に沿ったデータ転送を完了するためには、32のバスサイクル430が必要となる。レジスタファイル440は、図5に関連してさらに説明される。
【００３４】
図5は、ROW HIT/MISS信号がミスであり、プロセッサ400が、レジスタファイル440に対して要求されるワードのみを転送する必要があるときの、データ転送430aのタイミングを示す。そのワードは、1バスサイクルを必要とする。
【００３５】
図6は、本発明の実施形態による、キャッシュのフィルタリングの方法のフローチャートを示す。一般には、キャッシュミスは、ロウヒットまたはロウミスのいずれかとともに発生することになる。L1およびL2に対するキャッシュミスで、メモリ参照がロウミスを生成する場合、本発明の方法は、ランダムアクセスモードを使用してDRAM内のデータにアクセスし、アクセスされる行をラッチする。これは、アドレスの初回の使用を表し、この方法では、データをレジスタファイルのみに転送する。L1およびL2に対するキャッシュミスで、メモリ参照がロウヒットを生成する場合、この方法は、オープンページモードを使用してDRAMにアクセスし、データのブロック全体を転送することにより、L1、L2キャッシュを更新し、その行をアクティブに維持する。動作の際には、データアクセスは、READアクセスまたはWRITEアクセスのいずれかとなる。
【００３６】
図示のように、READアクセスの場合では、この方法は、最初に、L1がヒットであるかどうかを判定する。そうである場合、データはL1から読み出されることになり、ブロックは最新使用(Most Recently Used)(MRU)の状態にされることになる。そうではない場合、この方法は、L2がヒットであるかどうかを判定することになる。そうである場合、データはL2から読み出されることになり、L1は更新されることになり、L1ブロックおよびL2ブロックは、MRUの状態にされることになり、L1ブロックの書き戻し(Write Back)(WB)が、ブロックがダーティ(dirty)である場合、すなわち、キャッシュ内のブロックが、プロセッサにより修正されているが、まだ記憶域に書き戻されていない場合に、発生することになる。L2がヒットであると判定されない場合、この方法は、このヒットがロウヒットであるかどうかを判定することになる。そうである場合、L2ブロックはチェックされ、その後、ダーティなL2ブロックにより、L2またはL1のメモリへのWB、オープンページ(OP)モードを使用するメモリの読み出し、L1およびL2の更新、ならびに、L1およびL2内のブロックをMRUに設定することが行われることになる。L2ブロックがダーティでない場合は、メモリはオープンページモードを使用して読み出され、L1およびL2は更新され、L1およびL2のブロックはMRUに設定される。L2がヒットであると判定されず、この方法により、ロウヒットがないと判定される場合、メモリは、ランダムアクセス転送を使用して、単一のワードのみが読み出されることになり、アクセスされる行は、行ラッチ内にラッチされることになる。L1およびL2は、更新されない。
【００３７】
WRITEアクセスの場合では、この方法は、最初に、L1がヒットであるかどうかを判定する。そうである場合、データはL1に書き込まれることになり、ダーティビットがセットされることになり、L1内のブロックはMRUに設定されることになる。そうではない場合、この方法は、L2がヒットであるかどうかを判定することになる。そうである場合、データはL1およびL2に書き込まれることになり、L1およびL2内のダーティビットがセットされることになり、L1ブロックおよびL2ブロックは、MRUに設定されることになる。L2がヒットではないと判定される場合、この方法は、このアクセスがロウヒットであるかどうかを判定することになる。そうではない場合、メモリは、ランダムアクセス転送を使用して、単一のワードのみが書き込まれ、アクセスされる行は、行ラッチ内にラッチされ、L1およびL2は書き込まれない。アクセスがロウヒットであり、L1ブロックまたはL2ブロックがダーティである場合、L2ブロックまたはL1ブロックは、メモリに書き戻され、次いで、メモリはオープンページモードを使用して書き込まれ、L1ブロックおよびL2ブロックは書き込まれ、L1ブロックおよびL2ブロックは、MRUに設定される。L1ブロックまたはL2ブロックがダーティでない場合、メモリはオープンページモードを使用して書き込まれ、L1ブロックおよびL2ブロックは書き込まれ、L1ブロックおよびL2ブロックは、MRUに設定される。
【００３８】
本発明の代替の実施形態では、この方法が、所与のシステムの能力およびアプリケーションの要件に基づいて、様々なシステムに対して最適化されるということが可能である。一部のシステムでは、3つ以上のレベルのキャッシュを使用すること、または、クローズドページポリシーなどの様々なDRAMアクセスポリシーを使用することができ、一方で、さらに他のアプリケーションは、実行時間でのそれらの動作を、DRAM内のフィルタされる領域のスタティックな選択を変動する選択に変えるなどのように、変化させることができる。本発明の実施形態による、キャッシュのフィルタリングの方法および装置を、そのような様々な要件に対して最適化し、かつ適合させるために、2つの方法での実施形態の変更が考えられる。
【００３９】
第一に、本発明の実施形態は、フィルタリングのためのDRAM領域を選択することに関して、変更することができる。各DRAMバンク内で頻繁に使用される領域の数を増加させるための変更がなされる。前に説明した方法では、各バンクにつき、アクティブな行または領域はただ1つである。各行は、連続するアドレスの直線的な配列である。この変更では、頻繁に使用される領域として使用するために、各バンク内で不連続なアクセスが可能になる。多数のアプリケーションは、同じバンク内でアクセスされるアクティブ領域を2つ以上有し、したがって、それらのデータはキャッシュに転送する必要がある。
【００４０】
第二に、本発明の実施形態は、キャッシュフィルタの選択に関して、変更することができる。特に、実施形態は、固有のキャッシュレベル、またはプロセッサ内のキャッシュの組合せを、使用される頻度がより少ない参照をそれらから破棄するために、選択することができるように変更することができる。例えば、この方法では、L1データキャッシュに、使用される頻度がより少ないアクセスを破棄させる一方で、他のレベルでは、それらを受け入れる。これらの代替の実施形態の詳細説明が、以下でさらに詳述されることになる。
【００４１】
本発明のさらなる実施形態によれば、複数のアクティブ領域の変化が考えられる。特に、前に説明したキャッシュのフィルタリングの方法の選択性を向上させるために、行ラッチへの格納のために、各バンク内で2つの部分行が選択される。前に説明した方法では、バンクにつきただ1つの行がラッチされ、アクセスが同じバンク内の異なる行へ行くたびに、前にラッチされた行は、新しいもので置換しなければならない。多数のアプリケーションでは、同じバンク内で2つ以上の領域がアクティブである場合があり、したがって、それらはキャッシュに転送しなければならない。複数行のラッチングにより、キャッシュが、各バンク内で2つ以上の行から更新されることが可能になる。これにより、フィルタリングが、使用される頻度がより少ない参照を破棄することにおいて、より選択的になり、アクティブなDRAM領域に対するアクセスを破棄する可能性が低減される。本発明の説明に関しては、「アクティブ」は、プロセッサがこの領域に依然として滞在し、そのデータにアクセスすることを意味する。
【００４２】
図7は、各バンク内の複数のアクティブな部分行に対するラッチを使用するシステムを示す。DRAMバンクは、DRAMコントローラ内のラッチに、1つまたは複数の行アドレスを格納させるために、オープンページポリシーを使用する必要はないということに留意されたい。DRAMバンクに対する各アクセスは、DRAMコントローラ内の対応するラッチ内に格納することができる、固有の行アドレスを有する。
【００４３】
図7をさらに参照すると、各バンクのラッチは、2つの部分行を格納する。各部分行は、行全体の半分であり、図示された例では、512列のみを有する(例えば、上位r12、下位r823)。各ラッチのサイズは、1つの行アドレスを格納するために必要なラッチのサイズの2倍であり、A11を格納するための2つの追加的なビットを伴う。アドレスA11は、行の上半分が選択されているか、それとも下半分が選択されているかを決定する。さらに、バンク0のラッチが上位行12および下位行823をラッチする一方で、バンク31のラッチが下位行17および下位行956をラッチする。このことは、これらのバンクのこれらの部分行への任意のアクセスが、キャッシュ内で可能になることを効果的に意味する。
【００４４】
本発明のさらなる実施形態によれば、図8に関連して、適応可能な領域の変化が考えられる。図8は、適応可能な領域の変化のブロック図を示す。この実施形態では、行ラッチ内のアドレスは、入力としてプロセッサのアドレス全体(A31〜A0)を有する、プロセッサおよびマルチプレクサからの行選択信号に基づいて、変更することができる。これにより、アクティブ領域を、バンク配列内のどこででも定義することができる。例えば、プロセッサの選択信号が、行ラッチ内に格納するようにA11〜A2を選択する場合、ラッチされているA11〜A2と同じA11〜A2アドレスを有するいかなるアクセスも、アクティブなアクセスとみなされることになる。この領域は、DRAMバンクでのメモリロケーションの縦方向の配列である。
【００４５】
別の例を用いて説明するために、プロセッサは、マルチプレクサ(mux)を通して、ラッチされるアドレスを、A24〜A17、およびA11、A10(10ビット)となるように送信するものとする。ここで、行アドレスのA26、A25は、列アドレスA11、A10で置換される。さらに、プロセッサは、A24〜A17、A11、A10=0であるアドレスに対する誤アクセスを行うことにより、このアドレスを0に初期化するものとする。アドレスの残りA26、A25、A9〜A2について、すべての可能な値を持つことにより得られることから、以下のロケーションがキャッシュ内に受け入れられることになる。
1-ROW#0 CL255..CL0(A26、A25=00)
2-ROW#256 CL255〜CL0(A26、A25=01)
3-ROW#512 ROW#512のCL255〜CL0(A26、A25=10)
4-ROW#768 ROW#768のCL255〜CL0(A26、A25=11)
【００４６】
適応可能な領域の変化では、DRAMバンク内で、1つの横方向の配列(すなわち、行)から、1つの縦方向の配列(すなわち、1つの列の異なる行)まで、アプリケーションによる必要に応じて、任意の領域を選択することができる。図8のブロック図はまた、各ラッチは、選択信号に基づいて、任意の行/列サイズまたは構成をとることができる、2つの領域を格納することができることを示す。この実施形態での他の変化では、3つ以上の領域が各バンクのラッチ内に格納されることが提供され得る。アクティブ領域の数および各アクティブ領域のサイズは、本発明の実施形態の意図される範囲から逸脱することなく、所与のアプリケーションおよびシステムアーキテクチャにより決まり、それらとともに変化し得るということが、直ちに明白となるはずである。
【００４７】
さらなる変化に従って、本発明の代替の実施形態が、図9について、プロセッサ900内の命令キャッシュおよびデータキャッシュに関して説明される。図9は、使用される頻度がより少ない参照を、命令キャッシュおよびデータキャッシュの両方から破棄するために使用される、本発明のキャッシュフィルタのブロック図を示す。ここで、プロセッサ900は、1つのデマルチプレクサ93をデータキャッシュに対して、1つのデマルチプレクサ94を命令キャッシュに対して使用する。命令キャッシュから破棄されるアクセスは、命令レジスタ91内に格納され、1バスサイクルを必要とする。上述のように、ROW HIT/MISS信号がミスであるとき、プロセッサ900は、要求されるワードのみを、レジスタファイル92に対して転送する必要がある。
【００４８】
さらに別の変化に従って、本発明の代替の実施形態が、図10について、L1データキャッシュに関して説明される。図10は、使用される頻度がより少ない参照を、L1データキャッシュのみから破棄するために使用される、キャッシュフィルタの仕組みのブロック図を示す。ここで、プロセッサ1000は、デマルチプレクサ103を、L1データキャッシュに対して、DRAMからL1データキャッシュへのデータを破棄または受け入れるために使用する。L1キャッシュから破棄されるアクセスは、レジスタファイル102内に格納される。図11は、この変化に関する、メモリデータのアクセスのフローチャートを示す。図11は、ロウミスに関して、この方法では、データのブロックでL2キャッシュを更新し、L1データキャッシュ内にデータを格納させないという点で、図6に示される本発明の実施形態とは異なる。
【００４９】
上述した様々な実施形態のすべてにおいて、DRAMのアクセスポリシーは、オープンページポリシーまたはクローズドページポリシーであってよい。さらに、各バンク内の選択される領域のラッチングは、使用されるDRAMのアクセスモードに依存しない。
【００５０】
さらに別の変化に従って、本発明の代替の実施形態が、図12について、クローズドページのDRAMポリシーを使用する本発明のキャッシュフィルタに関して説明される。ここで、図12は、ロウヒット信号が、DRAMのオープンページが使用されているということを示さないという点で、図6に示される本発明の実施形態とは異なる。むしろ、ロウヒット信号は、アクセスされる領域のラッチされるアドレスが、アクティブで、以前に使用されていたということを意味する。ここでは、クローズドページ(CP)モードが、ロウヒットおよびロウミスの両方の状態で使用されることに留意されたい。
【００５１】
動作の際に、本発明の実施形態には、アプリケーションでメモリアドレスの使用頻度を分析するために、実際のシステムから収集されたベンチマークのトレースが、SPEC2000(商標)を使用して適用された。SPEC2000(商標)のベンチマークのトレースは、高性能コンピュータの最新世代に対して適用可能な、関連するベンチマークの標準化されたセットである。そのトレースは、SPEC (Standard Performance Evaluation Corporation)という、SPECのベンチマークスイートを確立、維持、および推奨するために組織された非営利企業により設定される。
【００５２】
トレースを利用して、各アプリケーションでのアドレス数が数えられ、それらの使用頻度が、1回以上使用されたアドレスと、2回以上使用されたアドレスとに分類された。アドレスの使用頻度を説明するために、以下のアドレスが、記載される順番でアクセスされるものとする。すなわち、A1、A13、A2、A1、A55、A23、A13、A39、A13、A7、A13、A1、A11、A22、A13、A1、A11、A13、A39、A1である。1回以上使用されるアドレスの数は、=9であり、それらは、A1、A13、A2、A55、A23、A39、A7、A11、A22であり、20回にわたって使用される。2回以上使用されるアドレスの数は、=4であり、それらは、A1、A13、A11、A39であり、15回にわたって使用される。
【００５３】
図13は、10のベンチマークでのアドレスの平均数およびそれらの使用頻度を示す。それらのアプリケーションのトレースのそれぞれから、50万の参照のサンプルが選択された。サンプルのサイズは、調査を簡単にするために選択された。50万を超える参照のサンプルサイズには、統計に対して意味のある影響はなかったこともまた見出された。SPEC2000(商標)のベンチマークから、以下のトレースが使用された。すなわち、gcc、gzip、parser、vortex、perlmk、twolf、apsi、equake、swim、およびmgridである。図13に示される結果から、以下のことが認められた。1)アドレスの使用頻度は非常に高く、すべてのトレースに対する、1回以上使用されたアドレスの平均数は、27,036に等しくあり、212,390回にわたって使用され、各アドレスに対する平均使用数は、=7.8であったほどである。および、2)すべてのトレースに対する、2回以上使用されたアドレスの平均数は、13,120に等しくあり、198,474回にわたって使用され、各アドレスに対する平均使用数は、=15.12であった。
【００５４】
性能の評価では、現代のプロセッサおよびDRAMを使用する従来のシステムが、本発明のキャッシュのフィルタリングの方法が適用された、同じプロセッサおよびDRAMを使用する第2のシステムに対して比較された。2つのシステムに対するプロセッサおよびDRAMのパラメータは、下記の表1に示される。パラメータは、現代のコンピュータシステムで使用される典型的な値を示すために選択された。
【００５５】
【表１】
0005608654.tif 000002
【００５６】
マルチレベルキャッシュシステムおよび複数のバンクを備えるDRAMのモデルを形成するために、SPEC2000(商標)のトレースを用いて、単純なトレース駆動シミュレータが使用された。シミュレータは、各アクセス当たりの平均時間を、適時に、各アクセスに対する演算のタイプに基づくコスト、および様々なメモリレベルでの演算のコストを加算することにより、計算を行った。より詳細には、DRAMは、4KバイトサイズのDRAMページを基本としてインターリーブされる複数のバンクからなっていて、各バンクは、4096の列のロケーションからなる固有の行をラッチした。同じ行を計画する任意のアクセスはロウヒットを与え、50nsでアクセスされるが、ロウミスは、100nsでアクセスされる。
【００５７】
本発明の実施形態のアプリケーションを、所与のプロセッサおよびDRAM内でシミュレートするために、シミュレータは、図6で示される方法に従った。その結果は、図14に示され、そこには、従来のシステム、および本発明のキャッシュのフィルタリングが適用されたシステムに対する、L1データキャッシュのミス率が図示される。
【００５８】
図14のグラフから、本発明の実施形態によるキャッシュのフィルタリングにより、L1データキャッシュのミス率が、平均2%向上することがわかる。本発明の実施形態は、L1のミス率を改善するが、初回のアクセスがキャッシュに転送されることを妨げる。このことは、本発明により、他の方法では他のブロックと競合し、それらを排除することになる、1回使用された参照を破棄することで相殺される。本発明の実施形態は、大多数の命令は局所性が高く、破棄に適する命令がほとんどないという想定に基づいて、命令キャッシュに対しては適用されなかった。したがって、本発明の実施形態には、この想定のもとでは、命令キャッシュの性能に対しては、限定的な利点があるということになる。
【００５９】
図15は、従来のシステムと、本発明の実施形態が適用されたシステムとの比較のための、L2キャッシュのデータミス率をグラフで示す。ここで、本発明のキャッシュのフィルタリングは、初回使用のアクセスを破棄することにより、L2データのミス率を、平均17%上昇させることが示される。キャッシュフィルタは、下記の表2で示されるように、DRAMに対する参照の数において、排除率および書き戻し動作の数を減少させることから、利点を得ている。
【００６０】
【表２】
0005608654.tif 000003
【００６１】
表2は、本発明のキャッシュフィルタが適用されたシステムと、従来のキャッシュシステムとの比較での、DRAM参照の総数を示す。DRAM参照は、命令およびデータに対するL1およびL2でのキャッシュミスに加え、書き戻し動作から発生する。排除率および書き戻し動作の数の減少は、L2のミス率の増加を相殺するのに役立つ。さらに、従来のシステムは、L2のミスが起こるたびに、プロセッサに対し、ブロック全体(すなわち、128バイト)を転送しなければならない。本発明のキャッシュフィルタは、ロウミスに関しては、プロセッサに対し、1ワード(すなわち、8バイト)を転送し、ロウヒットに関してのみ、L2ブロック全体を転送する。
【００６２】
本発明のキャッシュフィルタが適用されたシステムでのDRAM参照の数は、平均して、従来のシステムでのDRAM参照の数と同じであるが、従来のシステムのL2キャッシュのミス率は、本発明の実施形態が適用されたキャッシュのL2のミス率より低い。本発明の実施形態が適用されたキャッシュで、1回使用された参照を破棄することから発生するすべてのキャッシュミスは、どのようなブロックも排除しない。このことにより、本発明のキャッシュフィルタでの書き戻し動作の数は減少し、L2のミス率での差は相殺される。
【００６３】
図16に関して、それぞれの所与のベンチマークのトレースに対するロウヒット率が、従来のシステム、および、本発明の実施形態によるキャッシュフィルタを有するシステムの両方に対して示される。この結果は、実施形態によるキャッシュのフィルタリングにより、ロウヒット率が、最高で50%、平均して24%向上することを示す。インターセプトするキャッシュの、ロウヒット率への影響が評価され、キャッシュがDRAMに対するアクセスをインターセプトし、それらをより散乱させ、ロウヒット率を低下させることが明らかになった。このことは、L2のミス率がより高いということが、システムに対しDRAMにより頻繁にアクセスすることを強い、DRAMの行をより長い時間アクティブに維持することを促しているということを意味する。
【００６４】
従来のシステムと、本発明の実施形態によるキャッシュフィルタを有するシステムとの間の相対的な性能が、図17により示される。ここでの性能は、任意のレベル(すなわち、L1、L2)での、1アクセス当たりの平均期間(ns)として定義した。ベンチマークのトレースにわたって、本発明の実施形態によるキャッシュフィルタは、従来のシステムと比較して、システムの性能を、最高で44%、平均して22%向上させた。この利点は、破棄されたブロックのための、DRAMからのキャッシュブロックの転送時間の削減、および、ロウヒット率の向上の両方によるものと考えられる。
【００６５】
様々なL2キャッシュサイズに関する、ベンチマークのトレースに対する性能もまた評価されており、それが図18として示される。ここでは、10のベンチマークのトレースの平均性能が、4つの異なるキャッシュサイズ(すなわち、256KB、512KB、1024KB、および2048KB)に対して、従来のシステムに関して、本発明の実施形態によるキャッシュフィルタを有するシステムと比較して、繰り返して示される。本発明のキャッシュフィルタを使用するシステムの性能は、2倍のサイズのL2キャッシュを使用する従来のシステムの性能と同等であることが理解できる。例えば、1MバイトのL2キャッシュサイズを使用する、本発明のキャッシュフィルタの平均性能は5.21nsであったが、2MバイトのL2キャッシュサイズを使用する、従来のシステムの平均性能は5.19nsであった。平均して、本発明のキャッシュフィルタにより、示された様々なL2キャッシュサイズに対して、性能は22%向上する。このことは、本発明の少なくとも一部の実施形態は、L2キャッシュサイズの増大に関して拡張可能であり、それにより、ますます大容量のキャッシュを有する将来の技術に対して十分に適合することを、効果的に実証している。
【００６６】
増大するキャッシュサイズを考察することに加えて、図19で示される性能の結果に関しては、DRAMバンクの数が増やされた。具体的には、図19は、従来のシステム用の増加する倍数のDRAMバンク(すなわち、2、4、8、16、および32バンク)を使用して繰り返される10のトレースの平均性能を、本発明のキャッシュフィルタを使用するシステムと比較して示す。ここで、従来のシステムの性能は、バンクの数が2から32に変化するとき、2.8%向上するが、このことは、バンクの数への依存性がほとんどないことを示す。一方、本発明のキャッシュフィルタの性能は、バンクの数が2から32に変化するとき、13.6%向上するが、このことは、バンクの数への依存性が相対的に強いことを示す。全体として、本発明のキャッシュフィルタにより、例えば、8個のバンクを使用するとき、従来のシステムと比較して、性能は19.2%向上する。事実上、このことは、本発明のキャッシュフィルタからの利点の大部分は、少ない数のバンクで実現することができるということを示す。
【００６７】
なおもさらに、複数のスレッドを有する並列プログラムを形成するように、ベンチマークのトレースをインターリーブすることに関して、性能が考察された。特に、図20は、各アプリケーションがインターリーブされる2つのスレッドからなる場合の、5つのアプリケーションの、単一の命令に関する平均性能を示す。単純なトレース駆動シミュレータを使用して、デュアルコアプロセッサの影響をシミュレートするために、各キャッシュ(すなわち、L1命令、L1データおよびL2)のサイズおよび結合性は2倍にされたが、DRAM構成は、表1に記載したものから不変のままであった。その結果は、本発明のキャッシュフィルタにより、マルチスレッドのアプリケーションに対しては、性能が平均21.2%向上するということが、グラフで示される。そのような向上は、図18、19、および20により示され説明された性能向上と矛盾しない。
【００６８】
一般には、本発明のキャッシュのフィルタリングは、このように、プロセッサとDRAMとの間で増大する速度ギャップを示す先進のプロセッサ、ならびに、時間的局所性および空間的局所性を欠くアプリケーションについて、有利な性能向上を提供する。そのような向上が、システムのコストまたは複雑性を増加させることなく、実現される。
【００６９】
本発明の上記の実施形態は、単に例のためのものである。個々の実施形態に対しては、当業者により、本明細書に添付の特許請求の範囲のみにより定義される、本発明の範囲から逸脱することなく、変更、修正および変化がなされ得る。
【符号の説明】
【００７０】
21、91  命令レジスタ
22、92、102、440  レジスタファイル
23、93、94、103  デマルチプレクサ
24  ROW HIT/MISS信号
25、420  データバス
26  命令バス
27A、27B、401  レベル1キャッシュ
28、402  レベル2キャッシュ
30-1〜30-32  比較器
31-1〜31-32  行ラッチ
33  ORゲート
200、400、900、1000  プロセッサ
201  DRAMコントローラ
202、410  DRAM
401a、402a  ブロック
430  バスサイクル
430a  データ転送
A0〜A26  アドレス
c0〜c1023  列
r0〜r1023  行
【図１】
0005608654.tif 000004
【図２】
0005608654.tif 000005
【図３】
0005608654.tif 000006
【図４】
0005608654.tif 000007
【図５】
0005608654.tif 000008
【図６】
0005608654.tif 000009
【図７】
0005608654.tif 000010
【図８】
0005608654.tif 000011
【図９】
0005608654.tif 000012
【図１０】
0005608654.tif 000013
【図１１】
0005608654.tif 000014
【図１２】
0005608654.tif 000015
【図１３】
0005608654.tif 000016
【図１４】
0005608654.tif 000017
【図１５】
0005608654.tif 000018
【図１６】
0005608654.tif 000019
【図１７】
0005608654.tif 000020
【図１８】
0005608654.tif 000021
【図１９】
0005608654.tif 000022
【図２０】
0005608654.tif 000023