(57)【要約】【課題】種々のメモリラインのサイズに適応的に対応可能なキャッシュメモリシステムを提供する。【解決手段】本発明によるキャッシュメモリシステム(25)は、キャッシュメモリ(31)とキャッシュロジック(33)を備える。キャッシュメモリは複数組のウェイを有する。キャッシュロジックは、キャッシュミスに応答してメモリラインを要求するよう構成される。メモリラインはウェイラインの一部を表す。キャッシュロジックは、ウェイラインのどの部分がメモリラインによって表されているかに基づいてウェイの１つを選択するように構成される。キャッシュロジックは、さらに、選択されたウェイのメモリラインを記憶するように構成される。【選択図】図１
2006018841.tif 000002
【特許請求の範囲】
【請求項１】
さまざまなメモリラインサイズに適応的に対応可能なキャッシュメモリシステム（２５）であって、
ウェイのセットを有するキャッシュメモリ（３１）と、
キャッシュミスに応答して、ウェイラインの一部を表すメモリラインを要求するように構成されたキャッシュロジック（３３）
を備え、
前記キャッシュロジックは、前記ウェイラインのどの部分が該メモリラインによって表されるかに基づいて、該ウェイの１つを選択するように構成され、さらに、該選択したウェイに該メモリラインを記憶するように構成されることからなる、キャッシュメモリシステム。
【請求項２】
前記キャッシュロジックは、前記ウェイラインの残りの部分が前記選択したウェイに書き込まれないことを確実にするようにさらに構成される、請求項１に記載のキャッシュメモリシステム。
【請求項３】
前記キャッシュロジックは、前記メモリラインが前記ウェイラインの上位部分を表す場合は、第１の複数のウェイから前記選択したウェイを選択するように構成され、前記キャッシュロジックは、前記メモリラインが前記ウェイラインの下位部分を表す場合は、第２の複数のウェイから前記選択したウェイを選択するように構成される、請求項１に記載のキャッシュメモリシステム。
【請求項４】
前記キャッシュロジックは、第１の複数のウェイをウェイラインの上位部分に割り当て、かつ、第２の複数のウェイをウェイラインの下位部分に割り当てるように構成され、さらに、前記キャッシュロジックは、前記選択したウェイが、前記メモリラインによって表された前記ウェイラインの部分に確実に割り当てられるように構成される、請求項１に記載のキャッシュメモリシステム。
【請求項５】
前記取り出されたメモリラインは、タグ（５５）およびインデックス（５６）を有するアドレス（５２）に関連付けられ、前記キャッシュロジックは、前記キャッシュメモリが該タグおよび該インデックスによって特定されたメモリブロックからのデータを記憶しているかどうかに基づく値を有するヒット信号を送信するように構成されたタグ比較ロジック（１３１、１３２）を備え、さらに、前記キャッシュロジック（１２５）は、前記キャッシュメモリに記憶された、前記メモリブロックからのデータが前記メモリラインに対応するかどうかに基づいて前記ヒット信号を操作するように構成されたヒットロジックを備える、請求項１に記載のキャッシュメモリシステム。
【請求項６】
前記キャッシュロジックは、少なくとも第１の動作モードと第２の動作モードで動作することができ、前記キャッシュロジックは、該第１の動作モードで動作しているときは第１の複数のメモリラインを受けるように構成され、該第２の動作モードで動作しているときは第２の複数のメモリラインを受けるように構成され、該第１の複数のメモリラインのそれぞれは第１のサイズを有し、該第２の複数のメモリラインのそれぞれは第２のサイズを有し、前記キャッシュロジックは、該第１の複数のメモリラインのそれぞれが前記セットの各１つに割り当てられて、該各１つのセット内において完全アソシアティブであるように構成され、前記キャッシュロジックは、該第２の複数のメモリラインのそれぞれが前記セットの各１つに割り当てられて、該各１つのセット内において部分アソシアティブであるように構成される、請求項１に記載のキャッシュメモリシステム。
【請求項７】
キャッシュメモリシステム内において、さまざまなメモリラインサイズに適応的に対応する方法であって、
ウェイのセットと、ウェイラインの一部を表すメモリラインとを有するキャッシュメモリシステム（２５）においてメモリラインを受けるステップと、
前記メモリラインに関連付けられたアドレスに基づいて前記セットの１つを選択するステップと、
前記ウェイラインのどの部分が前記メモリラインによって表されるかに基づいて、前記選択したセットの前記ウェイの１つを選択するステップと、
前記選択したウェイに前記メモリラインを記憶するステップ
を含む、方法。
【請求項８】
前記ウェイラインの残りの部分が前記選択したウェイに書き込まれないことを確実にするステップをさらに含む、請求項７に記載の方法。
【請求項９】
ウェイの１つを選択する前記ステップは、
前記メモリラインが前記ウェイラインの上位部分を表す場合は、前記選択したセットの第１の複数のウェイから前記１つのウェイを選択するステップと、
前記メモリラインが前記ウェイラインの下位部分を表す場合は、前記選択したセットの第２の複数のウェイから前記１つのウェイを選択するステップ
を含むことからなる、請求項７に記載の方法。
【請求項１０】
第１の複数のウェイをウェイラインの上位部分に割り当てるステップと、
第２の複数のウェイをウェイラインの下位部分に割り当てるステップと、
前記選択したウェイが、前記メモリラインによって表された前記ウェイラインの部分に確実に割り当てられるようにするステップ
をさらに含む、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリシステムに関する。
【背景技術】
【０００２】
コンピュータプログラムの命令を処理する際に、プロセッサは、メモリからデータを取り出すことが必要な場合が多い。このようなデータの取り出しは有限の時間を要し、プロセッサが、データがメモリから取り出されるのを待つことによって、命令を処理する際に遅延が引き起こされる可能性がある。このような遅延を最小にするために、ほとんどのプロセッサは、「キャッシュ」と呼ばれるローカルメモリ構造を利用する。
【０００３】
データをキャッシュにロードできるように、かつ、プロセッサが他のメモリエリアからデータを繰り返し取り出す必要なくそのデータを再利用できるように、キャッシュは、プロセッサにローカル記憶エリアを提供する。キャッシュに記憶されたデータにアクセスするのに必要な時間は、一般に、コンピュータシステム内の他のメモリからのデータにアクセスするのに必要な時間よりもはるかに少ない。したがって、プロセッサが必要とするデータをキャッシュで入手できる場合には、他のメモリからデータを検索して取り出すのではなく、キャッシュからデータを取り出すことによって、データをプロセッサに供給するのに必要な時間を大幅に減少させることができる。
【０００４】
したがって、プロセッサがデータ要求を出すと、通常は、キャッシュが検索されて、要求されたデータの最新版がキャッシュに記憶されているかどうかが判断される。要求されたデータの最新版がキャッシュに記憶されている場合には、そのデータがキャッシュから取り出されて、プロセッサに供給される。一方、要求されたデータの最新版がキャッシュで入手できない場合には、要求されたデータを得るために、コンピュータシステムのメモリの他のエリアが検索される。要求されたデータが発見されると、このデータが取り出されて、プロセッサに供給される。また、このデータは、キャッシュにも記憶され、その結果、そのデータが後に要求された場合には、キャッシュのこのようなデータが上書きされるか、または、無効となるまで、キャッシュからそのデータを取り出すことができる。
【０００５】
ほとんどのキャッシュでは、データを記憶することができる「ウェイ（way）」と呼ばれるエントリの個数は限られている。さらに、ウェイは、通常は、セットにグループ化されている。各セットは、通常、同じウェイ数を有し、各ウェイは、通常、同じビット長を有する。例えば、１セットにつき８ウェイとｎ個のセットを有するキャッシュは、データを記憶することができる８ｎ個の可能なエントリすなわちウェイを有する。したがって、各ウェイが１２８バイトを記憶できる場合、キャッシュは、最大で１０２４ｎバイトまでの情報を記憶することができる。用語「ウェイライン（way line）」は、一般に、キャッシュの単一のウェイを満たすのに十分なサイズを有する個別にアドレス指定可能なデータブロックを指すことに留意されたい。ウェイラインへのアクセスは、アドレスを使用することによって提供される。アドレスのそれぞれは、通常、タグ、インデックス、およびオフセットを有する。タグおよびインデックスは、特定のウェイラインを一意に特定し、オフセットは、そのウェイライン内の特定のバイトを一意に特定する。
【０００６】
多くのコンピュータシステムでは、キャッシュは、ウェイのバイト長がメモリラインのバイト長と一致するように設計される。「メモリライン」は、メモリから取り出して、単一の送信オペレーションで（例えば、単一のデータワードとして）システムインターフェースを介して送信できる個別にアドレス指定可能なデータブロックを指す。コンピュータシステムのメモリラインのバイト長は、通常、システムのハードウェア資源によって制限される。例えば、システムインターフェースのサイズは、コンピュータシステムのメモリラインサイズを制限する。さらに、メモリへのデータの記憶およびメモリからのデータの取り出しを制御するメモリコントローラは、通常、当該メモリコントローラが実行する各読み出しオペレーションおよび各書き込みオペレーションにつき、１つのメモリラインを取り扱うようにハードワイヤード（結線）されている。
【０００７】
データは、通常、メモリラインベースで、メモリに記憶され、メモリから取り出されるので、キャッシュの各ウェイは、通常、ウェイラインのサイズがメモリラインのサイズに等しくなるように選択される。したがって、取り出されたメモリラインは、ウェイラインとして記憶することができ、単一のウェイを完全に満たす。
【０００８】
しかしながら、すべてのコンピュータシステムが、同じメモリラインサイズを使用するとは限らない。したがって、所与のプロセッサおよびキャッシュの構成と互換性のあるコンピュータシステムの数は限られている。一例として、６４バイトメモリラインを使用し、したがって、６４バイトシステムインターフェースを使用するコンピュータシステム用に設計されたキャッシュは、１２８バイトメモリラインを使用するコンピュータシステムと互換性がないことがあり、また、その逆も同じである。一般に、キャッシュを使用できるコンピュータシステムの範囲が増加するように、キャッシュは、異なるメモリラインサイズに対応するように適応できることが望ましい。
【０００９】
キャッシュの中には、２分の１だけ異なるメモリラインサイズに対応するように設計されたものがある。例えば、長さが１２８バイトのウェイを有するキャッシュは、１２８バイトメモリラインを受信して記憶することができる。これに関連して、キャッシュが、特定のバイトのデータを要求する読み出し要求を受信すると、キャッシュ内のキャッシュロジックは、要求されたデータがキャッシュで入手できるかどうかを判断する。要求されたデータがキャッシュにあり、かつ、要求されたデータを得るために他のメモリを検索することなくプロセッサに供給できる場合に、キャッシュヒットが起こる。要求されたデータがキャッシュで入手できず、他のメモリエリアを検索して要求されたデータを発見しなければならない場合には、キャッシュミスが起こる。
【００１０】
キャッシュミスに応答して、キャッシュロジックは、メモリコントローラに読み出し要求を送信する。メモリコントローラは、この読み出し要求に基づいて、要求されたデータを含む１２８バイトメモリラインを取り出し、このメモリラインをキャッシュに送信する。キャッシュは、この１２８バイトメモリラインを単一のウェイに記憶する。他の実施形態では、上述したキャッシュを、６４バイトメモリラインを使用するコンピュータシステムで実施することができる。このような実施形態では、キャッシュ内のキャッシュロジックは、各キャッシュミスにつき、２つの読み出し要求を送信する。これに関連して、メモリ要求の第１のものによって、プロセッサが要求したデータを含んだ６４バイトメモリラインの取り出しが引き起こされる。この６４バイトメモリラインは、ウェイラインの半分を表し、キャッシュの特定のキャッシュウェイの半分に記憶される。その特定のキャッシュウェイをそのウェイラインの他方の半分で満たすために、第２の読み出し要求によって、第１の読み出し要求により取り出された他方の６４バイトメモリラインと隣接する６４バイトメモリラインの取り出しが引き起こされる。第２の読み出し要求によって取り出された６４バイトメモリラインは、ウェイ全体が有効なデータで満たされるように、第１の読み出し要求によって取り出された６４バイトメモリラインと同様に記憶される。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述したように、ウェイ全体を有効なデータで満たすことは、ウェイのいずれの部分が、要求されたデータを含むかにかかわらず、キャッシュヒットに応答して、キャッシュから有効なデータを確実に取り出すことに役立つ。しかしながら、上述したように、各ウェイを有効なデータで完全に満たすことを確保するために複数の読み出し要求を生成することは、望ましくないことに、コンピュータシステムの性能に悪影響を与える可能性のあるシステムインターフェースの遅延を導入する。このような遅延を削減または除去する技法が一般に望ましい。
【課題を解決するための手段】
【００１２】
全体的に、本願の実施形態は、さまざまなメモリラインサイズに適応的に対応できるシステムおよび方法を提供する。
【００１３】
本開示の例示的な一実施形態によるキャッシュメモリシステムは、キャッシュメモリおよびキャッシュロジックを備える。キャッシュメモリはウェイのセットを有する。キャッシュロジックは、キャッシュミスに応答してメモリラインを要求するように構成され、メモリラインはウェイラインの一部を表す。キャッシュロジックは、ウェイラインのどの部分がメモリラインによって表されるかに基づいて、ウェイの１つを選択するように構成される。キャッシュロジックは、さらに、選択されたウェイにメモリラインを記憶するように構成される。
【００１４】
本開示の別の実施形態によるキャッシュメモリシステムは、キャッシュメモリ、タグ比較ロジック、およびヒットロジックを備える。キャッシュメモリは、タグアレイおよびデータアレイを有し、タグ比較ロジックは、読み出し要求に関連したアドレスのタグ、および、そのアドレスのインデックスに基づいてタグアレイから取り出されたタグを受信するように構成される。さらに、タグ比較ロジックは、受信したタグを比較し、受信したタグの比較に基づいてヒット信号を送信するように構成される。このヒット信号は、データアレイのエントリが、アドレスのタグおよびインデックスによって特定されたメモリブロックからのデータを記憶しているかどうかを示す。ヒットロジックは、メモリブロックからのデータが、読み出し要求によって要求されたデータを含むかどうかに基づいて、送信されたヒット信号を操作するように構成される。
【００１５】
本開示のさらに別の実施形態によるキャッシュメモリシステムは、キャッシュメモリおよびキャッシュロジックを備える。キャッシュメモリは、ウェイのセットを有し、キャッシュロジックは、少なくとも第１の動作モードおよび第２の動作モードで動作することができる。キャッシュロジックは、第１の動作モードで動作している時に第１の複数のメモリラインを受信するように構成され、第２の動作モードで動作している時に第２の複数のメモリラインを受信するように構成される。第１の複数のメモリラインのそれぞれは第１のサイズを有し、第２の複数のメモリラインのそれぞれは第２のサイズを有する。さらに、キャッシュロジックは、第１の複数のメモリラインのそれぞれがセットの各１つに割り当てられて、セットの各１つ内において完全アソシアティブであるように構成され、かつ、第２の複数のメモリラインのそれぞれがセットの各１つに割り当てられて、セットの各１つ内において部分アソシアティブ（またはセット・セットアソシアティブ）であるように構成される。
【００１６】
本開示は、添付の図面を参照することによってより良く理解することができる。図面の要素は、必ずしも互いに同一縮尺であるとは限らず、本開示の原理を明確に示す部分が強調されている。さらに、同じ参照符号は、いくつかの図を通じて対応する部分を示している。
【実施例】
【００１７】
本開示の実施形態は、一般に、さまざまなメモリラインサイズに適応的に対応することができるキャッシュに関する。本開示の例示的な一実施形態によるキャッシュは、キャッシュとインターフェースされるメモリラインのサイズに応じて、少なくとも２つの動作モードで動作することができる。キャッシュは、ｎバイトのエントリまたはウェイを有するメモリを備える。第１の動作モードでは、キャッシュは、ｎバイトメモリラインを提供するコンピュータシステムで実施される。この動作モードでは、キャッシュは、各キャッシュミスについて読み出し要求をメモリシステムにサブミット（提示）する。この読み出し要求に応答して、フルウェイライン（１つの完全なウェイライン）を表すｎバイトのメモリラインが、メモリから取り出され、システムインターフェースを介してキャッシュに送信される。キャッシュは、システムインターフェースから受信したこのｎバイトのメモリラインを、アドレスによって特定されたセットの単一のウェイに記憶する。
【００１８】
第２の動作モードでは、キャッシュは、より小さなサイズのメモリライン（例えば、（ｎ／２）バイトのメモリライン）を提供するコンピュータシステムで実施される。第２の動作モードでは、キャッシュは、各キャッシュミスについて、アドレスを有する読み出し要求をメモリシステムにサブミットする。この読み出し要求に応答して、アドレスに基づき、ウェイラインの一部のみを表すｘバイトのメモリラインが、メモリから取り出され、システムインターフェースを介してキャッシュに送信される。ここで、ｘはｎよりも小さい。ウェイラインのどの部分が取り出されるかに応じて、キャッシュは、アドレスによって特定されたセットのウェイの１つを選択し、選択したウェイにｘバイトを記憶する。同じウェイラインの別の部分が要求されると、キャッシュは、このような他の部分が同じセットの異なるウェイに確実に記憶されるようにする。さらに、選択したウェイに記憶されたｘバイトのいずれも、ウェイライン全体がキャッシュに記憶されるかどうかにかかわらず、後に、プロセッサからの読み出し要求を満たすのに使用することができる。したがって、単一の読み出し要求に対して複数のメモリ読み出しは必要ない。
【００１９】
図１は、本開示の例示的な一実施形態によるコンピュータシステム２０を示している。システム２０は、周知の命令処理技法に従って命令を実行するように構成されたプロセッサ２２を備える。プロセッサ２２は、キャッシュメモリシステムに接続されて、このキャッシュメモリシステムと通信する。このキャッシュメモリシステムは「キャッシュ２５」ともいう。キャッシュ２５は、プロセッサ２２が使用するデータを一時的に記憶するキャッシュメモリ３１と、キャッシュ２５のオペレーションおよび機能を制御するキャッシュロジック３３とを備える。キャッシュロジック３３は、ハードウェアで実施されることが好ましいが、必要に応じて、キャッシュロジック３３の機能の一部をソフトウェアで実施することもできる。プロセッサ２２がキャッシュ２５のデータにアクセスするのに必要な時間を削減するために、プロセッサ２２およびキャッシュ２５は、単一の集積回路３４に存在することが好ましい。
【００２０】
キャッシュ２５は、システムインターフェース３６に接続され、これによって、キャッシュは、１つまたは２つ以上のメモリシステム４２等の他のシステムコンポーネントと通信することが可能になる。システムインターフェース３６は、ｎバイトのメモリラインを単一の送信オペレーションで（例えば、単一のデータワードとして）、メモリシステム４２から、または、コンピュータシステム２０の他のリソースからキャッシュ２５へ通信することを可能にする複数の接続を備える。
【００２１】
メモリシステム４２は、メモリ４３と、メモリ４３へのデータの記憶およびメモリ４３からのデータの取り出しを制御する１つまたは２つ以上のメモリコントローラ４８とを備える。メモリコントローラ４８は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実施することができる。
【００２２】
動作時において、プロセッサ２２は、１つまたは２つ以上のコンピュータプログラムの命令を実行中に、読み出し要求および書き込み要求を生成する。読み出し要求は、データを取り出してプロセッサ２２に返すように要求するオペレーションを指す。書き込み要求は、データを特定のメモリロケーションに書き込むように要求するオペレーションを指す。各読み出し要求は、要求されたデータを取り出すメモリ４３内のロケーションを特定するアドレスを含む。各書き込み要求は、データを書き込むメモリ４３内のロケーションを特定するアドレスを含む。
【００２３】
システム２０は、追加プロセッサおよび追加キャッシュ（図１には特に図示せず）を含むことができることに留意されたい。メモリコントローラ４８または追加プロセッサの１つのいずれかが、読み出し要求に応答することができる。これに関連して、要求されているデータが追加プロセッサのキャッシュで発見された場合には、その追加プロセッサが、その要求されたデータで応答することができる。そうでない場合には、要求されたデータは、メモリコントローラ４８によって取り出される。
【００２４】
図２に示すように、各アドレス５２は、タグ５５、インデックス５６、およびオフセット５７の少なくとも３つの部分から構成される。タグ５５およびインデックス５６は、要求された１つまたは複数のデータバイトが存在するメモリ４３のブロック４９を特定する。メモリブロック４９のサイズは、各メモリブロック４９が異なるウェイラインを規定するように、キャッシュメモリ３１のサイズと一致する。例えば、一実施形態では、キャッシュ２５の各ウェイの長さおよび各メモリブロック４９の長さは、１２８バイトである。ただし、他の実施形態では、他のバイト長も可能である。
【００２５】
オフセット５７は、タグ５５およびインデックス５６によって特定されたメモリブロック４９内において、取り出し（読み出し要求の場合）または上書き（書き込み要求の場合）がなされる特定の１つまたは複数のバイトを一意に特定する。したがって、読み出し要求内のアドレス５２のタグ５５およびインデックス５６を使用すると、要求された１つまたは複数のデータバイトを記憶するメモリブロック４９を見つけることができ、オフセット５７を使用すると、上記メモリブロック４９内において、要求された１つまたは複数のデータバイトを見つけることができる。いくつかの実施形態では、アドレス５２は、要求されているバイト数を特定するサイズ要求も含むことができ、このサイズ要求は、オフセットと共に、要求された１つまたは複数のデータバイトを特定するのに使用することができる。
【００２６】
図３に示すように、ｘを任意の正の整数として、キャッシュメモリ３１はｘ個のセットにセグメント化される。各セットは複数のウェイから構成され、各ウェイは、フルウェイラインを記憶できるキャッシュメモリロケーションである。好ましい実施形態では、各セットは同じ個数のウェイを有する。図３において、各セットは、簡単にするために４つのウェイを有するものとして示されている。しかしながら、他の実施形態では、他の個数のウェイが各セット内で可能である。
【００２７】
アドレス５２のインデックス５６は、キャッシュ２５のセットの１つを一意に特定し、複数のアドレスは、同じインデックス５６を有することができる。したがって、異なるメモリブロック４９からのウェイラインを同じセットに記憶することができる。
【００２８】
一実施形態では、キャッシュ２５は、メモリシステム４２がインターフェース３６を介してｎバイトのメモリラインを送信できるように十分なサイズのインターフェース３６を有するシステム２０内で実施される。さらに、単一のメモリラインが単一のウェイを満たすように、キャッシュ２５の各ウェイはｎバイトの長さを有することが好ましい。したがって、フルウェイラインを表す単一のメモリラインを、メモリ４３から取り出すことができ、システムインターフェース３６を介してキャッシュ２５へ単一の送信オペレーションで送信することができる。このような実施形態では、キャッシュ２５のオペレーションは、従来のキャッシュのオペレーションと同様である。
【００２９】
これに関連して、キャッシュ２５がプロセッサ２２から読み出し要求を受信すると、キャッシュロジック３３は、その要求されたデータがキャッシュ２５に記憶されているかどうかを判断する。キャッシュヒットは、要求されたデータがキャッシュ２５に記憶されており、キャッシュ２５から直接取り出すことができる状況を指すことに留意されたい。さらに、キャッシュミスは、要求されたデータが、現在、キャッシュ２５で入手できない（すなわちキャッシュ２５にない）状況を指す。
【００３０】
キャッシュヒットの場合、キャッシュロジック３３は、要求されたデータをキャッシュメモリ３１から取り出し、このデータをプロセッサ２２に送信する。一方、キャッシュミスの場合、キャッシュロジック３３は、システムインターフェース３６を介してメモリシステム４２へ読み出し要求を送信する。読み出し要求のアドレス５２に基づいて、メモリコントローラ４８は、要求されたデータを含んだ、フルウェイラインを表すメモリラインを取り出す。これに関連して、メモリコントローラ４８は、受信したメモリアドレス５２のタグ５５およびインデックス５６によって特定されたメモリブロック４９を取り出す。次に、メモリコントローラ４８は、取り出したウェイラインを、読み出し要求のアドレス５２と共に、システムインターフェース３６を介してキャッシュ２５へ送信する。
【００３１】
キャッシュロジック３３は、ウェイラインを受信すると、そのウェイラインを、前述のアドレス５２のインデックス５６によって特定されたセットのウェイの１つに記憶する。また、キャッシュロジック３３は、プロセッサ２２が先に発行した前述の読み出し要求を満たすために、要求されたデータをプロセッサ２２にも送信することに留意されたい。ウェイラインがキャッシュメモリ３１に書き込まれる前または後に、要求されたデータを送信することができる。
【００３２】
ウェイラインがキャッシュ２５に書き込まれると、ウェイラインが無効になるか、または、上書きされるまで、メモリシステム４２に読み出し要求をサブミットすることなく、そのウェイライン内のデータを要求する今後の読み出し要求をキャッシュ２５から直接取り出すことができる。これに関連して、新たなウェイラインが同じウェイに記憶されると、そのウェイラインは上書きされる。さらに、ウェイラインを規定するデータが、もはや、このようなデータの最新版でない場合には、そのウェイラインは無効にされる。例えば、メモリブロック４９からのウェイラインがキャッシュ２５に書き込まれると、このメモリブロック４９を更新することができる。このような更新が起こると、ウェイライン内の１つまたは２つ以上のバイトを要求する読み出し要求が、キャッシュ２５に存在する先に書き込まれたウェイラインではなく、メモリシステム４２から取り出されるように、そのウェイラインは無効にされることが好ましい。キャッシュに記憶されたウェイラインを無効にするために、前にウェイラインが取り出されたメモリブロック４９を特定するアドレスを有する読み出し要求に応答してキャッシュミスが起こるように、キャッシュ２５内の制御データが操作される。
【００３３】
別の実施形態では、キャッシュ２５は、（ｎ／２）バイトのみのメモリラインを送信できるインターフェース３６を有するシステム２０内で実施される。例えば、キャッシュ２５の各ウェイが１２８バイトを記憶できる場合、システムインターフェース３６は、６４バイトのメモリラインを送信することができる。このような実施形態では、キャッシュロジック３３は、各セットのウェイの半分を、そのセットに記憶できる各ウェイラインの上半分に割り当てるように構成され、かつ、キャッシュロジック３３は、各セットのウェイの残りの半分を、そのセットに記憶できる各ウェイラインの下半分に割り当てるように構成される。したがって、各ウェイラインについて、そのウェイラインの上半分は、特定のセットのウェイの半分に記憶することができ、そのウェイラインの下半分は、その特定のセットのウェイの他方の半分に記憶することができる。
【００３４】
上記を例証するために、奇数ウェイ（すなわち、ウェイ１および３）がウェイラインの上半分に割り当てられ、偶数ウェイ（すなわち、ウェイ０および２）がウェイラインの下半分に割り当てられると仮定する。ただし、他の実施形態では、他の割り当て方式も可能である。プロセッサ２２からの読み出し要求の結果、キャッシュミスが起こると、キャッシュロジック３３は、システムインターフェース３６を介してメモリシステム４２へ読み出し要求を送信する。これに応答して、メモリコントローラ４８は、読み出し要求に含まれるアドレス５２のタグ５５およびインデックス５６によって特定されたメモリブロック４９からウェイラインの半分を表すメモリラインを取り出す。これに関連して、要求されたデータが、特定されたメモリブロック４９の上半分（すなわち、最上位ビットを有する半分）にあることをオフセット５７が示す場合には、メモリコントローラ４８は、そのウェイラインの上半分を取り出し、そのウェイラインの上半分を、読み出し要求のアドレス５２と共に、システムインターフェース３６を介してキャッシュ２５へ送信する。要求されたデータが、特定されたメモリブロック４９の下半分（すなわち、最下位ビットを有する半分）にあることをオフセット５７が示す場合には、メモリコントローラ４８は、そのウェイラインの下半分を取り出し、そのウェイラインの下半分を、読み出し要求のアドレス５２と共に、システムインターフェース３６を介してキャッシュ２５へ送信する。
【００３５】
キャッシュロジック３３は、取り出されたウェイラインの半分を受信すると、取り出されたウェイラインの半分がウェイラインの上半分であるのか、それとも下半分であるのかに応じて、アドレス５２のインデックス５６によって特定されたセットのウェイの１つにそのウェイラインの半分を記憶する。具体的には、ウェイラインの半分がウェイラインの上半分である場合には、キャッシュロジック３３は、そのウェイラインの半分を、ウェイラインの上半分に割り当てられたウェイの１つ（すなわち、この例ではウェイ１または３のいずれか）に記憶する。一方、ウェイラインの半分がウェイラインの下半分である場合には、キャッシュロジック３３は、そのウェイラインの半分を、ウェイラインの下半分に割り当てられたウェイの１つ（すなわち、この例ではウェイ２または４のいずれか）に記憶する。
【００３６】
受信したウェイラインの半分がウェイラインの上半分であるのか、それともウェイラインの下半分であるのかは、オフセット５７の最上位ビットが示すことに留意されたい。これに関連して、このビットがアサートされている場合には、受信したウェイラインの半分はウェイラインの上半分であり、このビットがディアサートされている場合には、受信したウェイラインの半分はウェイラインの下半分である。したがって、キャッシュロジック３３を、オフセット５７、具体的には、この例ではオフセット５７の最上位ビットに基づいて、受信したウェイラインの半分を記憶するウェイを選択するように構成することができる。他の例では、アドレスの他の部分を使用して、受信したウェイラインの部分を記憶するウェイを選択することができる。
【００３７】
前述のウェイラインの他方の半分（すなわち、取り出されなかった半分）のデータが要求されると、この他方の半分は、取り出された半分と同じウェイには記憶されないことに留意されたい。この他方の半分は、この他方の半分のデータを特定する読み出し要求がプロセッサ２２によって発行されるまで取り出す必要はない。
【００３８】
プロセッサ２２からの読み出し要求に応答してキャッシュヒットがあるかどうかを判断するために、キャッシュロジック３３は、読み出し要求がウェイラインの上半分のデータを要求しているのか、それとも下半分のデータを要求しているのかを判断する。この判断は、オフセット５７、具体的には、オフセットの最上位ビットを解析することによって行うことができることに留意されたい。読み出し要求が、ウェイラインの上半分のデータを要求している場合には、キャッシュロジック３３は、ウェイラインの上半分に割り当てられたウェイのいずれかが、読み出し要求のアドレス５２に関連したデータを記憶しているかどうかを判断する。この例では、キャッシュロジック３３は、インデックス５６によって特定されたセットのウェイ１または３が、アドレス５２によって特定されたデータを記憶しているかどうかを判断する。記憶している場合には、キャッシュロジック３３は、要求されたデータを適切なウェイ１または３から取り出し、要求されたデータをプロセッサ２２に送信する。そうでない場合には、キャッシュロジック３３は、キャッシュミスを示し、読み出し要求をメモリシステム４２へ送信する。
【００３９】
読み出し要求が、ウェイラインの下半分のデータを要求している場合には、キャッシュロジック３３は、ウェイラインの下半分に割り当てられたウェイのいずれかが、読み出し要求のアドレス５２に関連したデータを記憶しているかどうかを判断する。この例では、キャッシュロジック３３は、インデックス５６によって特定されたセットのウェイ２または４が、アドレス５２によって特定されたデータを記憶しているかどうかを判断する。記憶している場合には、キャッシュロジック３３は、要求されたデータを適切なウェイ２または４から取り出し、要求されたデータをプロセッサ２２に送信する。そうでない場合には、キャッシュロジック３３は、キャッシュミスを示し、読み出し要求をメモリシステム４２へ送信する。
【００４０】
前述の機能を実施するのに使用できるキャッシュロジック３３について、さまざまな構成が存在する。図４は、キャッシュ２５の例示的な一実施形態を示している。簡単にするために、以下では、図４のキャッシュ２５は１セットにつき２つのウェイのみを有するものとして説明する。したがって、各セットは２つのウェイのみを有し、これらのウェイは、以下では「ウェイ０」および「ウェイ１」とそれぞれ呼ぶことにする。以下では、少なくとも１つの動作モードにおいて、ウェイ１がウェイラインの上半分に割り当てられ、ウェイ０がウェイラインの下半分に割り当てられるものと仮定する。他の実施形態では、同様の回路機構を使用して、１セットにつきより多くの個数のウェイを有するキャッシュを実施することができる。
【００４１】
図４に示すキャッシュ２５は、２つのタグアレイ１１４および１１５と、２つのデータアレイ１１６および１１７とを有する。アレイ１１４〜１１７のそれぞれは、データをキャッシュ２５に記憶できるキャッシュメモリ３１（図１）のエリアである。例えば、各アレイ１１４〜１１７は個別のレジスタとすることができる。ただし、他の実施形態では、アレイ１１４〜１１７の他の構成も可能である。
【００４２】
データアレイ１１６は、ウェイラインの下半分に割り当てられたすべてのウェイを実施するのに使用される。この例では、アレイ１１６の各エントリは、異なるセットのウェイ０を表す。さらに、データアレイ１１７は、ウェイラインの上半分に割り当てられたすべてのウェイを実施するのに使用される。この例では、アレイ１１７の各エントリは異なるセットのウェイ１を表す。
【００４３】
データアレイ１１６の各エントリはタグアレイ１１４のエントリに対応し、データアレイ１１７の各エントリはタグアレイ１１５のエントリに対応する。ウェイラインの少なくとも一部がデータアレイ１１６のエントリに記憶されると、そのウェイラインの一部が取り出されたメモリブロック４９（図１）を特定するタグ５５は、タグアレイ１１４の対応するエントリに記憶される。データアレイ１１６およびタグアレイ１１４の対応するエントリが同じインデックス５６によって参照される、換言すると、同じインデックス５６によって一意に特定されることに留意されたい。
【００４４】
さらに、ウェイラインの少なくとも一部がデータアレイ１１７のエントリに記憶されると、そのウェイラインの一部が取り出されたメモリブロック４９（図１）を特定するタグ５５は、タグアレイ１１５の対応するエントリに記憶される。データアレイ１１７およびタグアレイ１１５の対応するエントリが同じインデックス５６によって参照される、換言すると、同じインデックス５６によって一意に特定されることに留意されたい。
【００４５】
また、図４に示すキャッシュ２５は、フィルロジック（Fill Logic）１２２、ヒットロジック１２５、ならびにタグ比較ロジック１３１および１３３も備える。これらのロジック１２２、１２５、１３１、および１３３は、図１に示すキャッシュロジック３３の一部を実施する。フィルロジック１２２は、ウェイラインからのデータがいつキャッシュ２５に記憶されるかを示す。さらに、ヒットロジック１２５ならびにタグ比較ロジック１３１および１３３は、共に動作して、プロセッサ２２から受信した読み出し要求がキャッシュヒットになるのか、それともキャッシュミスになるのかを示す。これらのロジック１２２、１２５、１３１、および１３３のオペレーションおよび機能については、より詳細に後述する。
【００４６】
キャッシュ２５の動作モードを示す１ビット信号１３７が提供される。この１ビット信号は、以下では、「モード信号」と呼ぶことにする。これに関連して、キャッシュ２５が、データアレイ１１６および１１７に記憶されるｎバイトのメモリラインをキャッシュ２５に提供するように構成されたコンピュータシステム２０において実施される場合には、このモード信号はアサートされる。ここで、ｎはアレイ１１６および１１７内のウェイのバイト長である。以下では、このような動作モードを「フルウェイライン動作モード」と呼ぶことにする。キャッシュ２５が、（ｎ／２）バイトのメモリラインを有するキャッシュ２５を提供するように構成されたコンピュータシステム２０において実施される場合には、このモード信号はディアサートされる。以下では、このような動作モードを「ハーフウェイライン動作モード」と呼ぶことにする。モード信号１３７が複数のビットを有することができることに留意されたい（例えば、システム２０が３つ以上のメモリラインサイズに対応できる場合）。
【００４７】
以下で説明する実施形態では、フルウェイライン動作モード中にキャッシュ２５が受信した各メモリラインは、そのメモリラインのアドレスによって特定されたセット内において完全アソシアティブ（fully associative：フルアソシアティブ）である。さらに、メモリラインがウェイラインの一部を表す別の動作モード（例えば、ハーフウェイライン動作モード）中にキャッシュ２５が受信した各メモリラインは、そのメモリラインのアドレスによって特定されたセット内において部分アソシアティブ（partially associative）である。本明細書では、メモリラインは、それをセットの任意のウェイに記憶できる場合に、そのセット内において「完全アソシアティブ」であり、また、メモリラインは、それをセットのいくつかのウェイのみに記憶できる場合に、そのセット内において「部分アソシアティブ」である。
【００４８】
一例として、ハーフウェイライン動作モードでは、ウェイラインの下半分を表すメモリラインを、そのメモリラインのアドレスによって特定されたセットのウェイラインの下半分に割り当てられた任意のウェイに記憶することができる。一方、キャッシュロジック３３は、このようなメモリラインが、ウェイラインの上半分に割り当てられたウェイに記憶されないことを確実にする。メモリラインは、そのアドレスのインデックス５６によって特定されたセットのウェイの少なくとも１つではあるが、すべてではないウェイに記憶することができるので、メモリラインは、ハーフキャッシュライン動作モード中、特定されたセット内において部分アソシアティブである。
【００４９】
図４に示すように、キャッシュ２５には、「読み出し信号」および「フィル信号」とそれぞれ呼ばれる他の２つの１ビット信号１４２および１４４が提供される。読み出し信号１４２は、アサートされると、キャッシュ２５が、読み出しオペレーションを実行しつつあること、換言すると、プロセッサ２２からの読み出し要求に応えようとしつつあることを示す。フィル信号１４４は、アサートされると、キャッシュ２５が、フィルオペレーションを実行しつつあること、換言すると、メモリシステム４２（図１）から受信したウェイラインの少なくとも一部を処理し、記憶しつつあることを示す。次に、読み出しオペレーションおよびフィルオペレーションの実行を以下でより詳細に説明する。
【００５０】
キャッシュ２５は、フルウェイライン動作モード中（すなわち、キャッシュ２５がフィルオペレーションを実行する時）に、キャッシュ２５に記憶されるメモリラインをメモリシステム４２から受信すると、データアレイ１１６または１１７の一方に、ウェイライン全体を表すそのメモリラインを記憶する。これに関連して、ウェイラインに関連したアドレス５２のタグ５５およびインデックス５６は、配列１１４〜１１７に送信される。さらに、フィル信号がアサートされて、フィルオペレーションが実行されることが示され、フィルデータ（FILL DATA）１４１（すなわち、ウェイラインはキャッシュ２５に記憶される）が、データアレイ１１６および１１７に提供される。フィルロジック１２２は、モード信号に基づいて、ウェイ０または１のいずれかにフィルデータを記憶することができると判断する。したがって、フィルロジック１２２は、フィルデータを記憶する最適なウェイとして、２つの利用可能なウェイ０または１を選択する。
【００５１】
フィルロジック１２２は、最適なウェイを選択する置き換えアルゴリズムを利用できることに留意されたい。これに関連して、置き換えアルゴリズムは、キャッシュミスの可能性を低減するために、フィルオペレーションの実行に利用可能なウェイを戦略的に選択する。このようなフィルアルゴリズムは、この技術分野で既知であり、従来のキャッシュで広く使用されている。図４のフィルロジック１２２は、既知の置き換えアルゴリズムまたは今後開発される置き換えアルゴリズムを使用して、フィルオペレーションを実行する際に利用可能なウェイを選択することができる。
【００５２】
フィルロジック１２２がフィルオペレーションを完了するのにウェイ０を選択すると、フィルロジック１２２は、フィル信号１５２および１５３をアサートし、フィル信号１５４および１５５をディアサートする。フィル信号１５４がアサートされると、タグアレイ１１４は、当該タグアレイ１１４が受信しているタグ５５を、当該タグアレイ１１４が受信しているインデックス５６によって特定されたエントリに記憶する。さらに、データアレイ１１６は、アサートされたフィル信号１５３を受信すると、当該データアレイ１１６が受信しているインデックス５６によって特定されたエントリにフィルデータ１４１を記憶する。したがって、フィルロジック１２２がフィルオペレーションを完了するのにウェイ０を選択すると、ウェイライン全体がデータアレイ１１６に記憶される。
【００５３】
フィルロジック１２２がフィルオペレーションを完了するのにウェイ１を選択すると、フィルロジック１２２は、フィル信号１５２および１５３をディアサートし、フィル信号１５４および１５５をアサートする。フィル信号１５２がアサートされると、タグアレイ１１５は、当該タグアレイ１１５が受信しているタグ５５を、当該タグアレイ１１５が受信しているインデックス５６によって特定されたエントリに記憶する。さらに、データアレイ１１７は、アサートされたフィル信号１５５を受信すると、当該データアレイ１１７が受信しているインデックス５６によって特定されたエントリにフィルデータ１４１を記憶する。したがって、フィルロジック１２２がフィルオペレーションを完了するのにウェイ１を選択すると、ウェイライン全体を表す、受信したメモリラインがデータアレイ１１７に記憶される。
【００５４】
キャッシュ２５は、プロセッサ２２から読み出し要求を受信すると（すなわち、キャッシュ２５が読み出しオペレーションを実行していると）、要求されたデータがキャッシュ２５で入手できるかどうかを判断し、入手できる場合には、要求されたデータを取り出す。これに関連して、読み出し要求に応答して、読み出し要求に含まれるアドレス５２のタグ５５およびインデックス５６が、タグアレイ１１４および１１５ならびにデータアレイ１１６および１１７に送信される。さらに、読み出し信号１４２がアサートされる。タグアレイ１１４は、受信したインデックス５６によって特定されたエントリに記憶されたタグを取り出し、タグアレイ１１４は、取り出したタグをタグ比較ロジック１３１に送信する。タグ比較ロジック１３１は、読み出し要求アドレス５２からタグ５５も受け取る。タグ比較ロジック１３１は、タグアレイ１１４からのタグと読み出し要求からのタグ５５とを比較する。これら２つのタグが一致すると、タグ比較ロジック１３１は信号１６５をアサートする。そうでない場合には、タグ比較ロジック１３１は信号１６５をディアサートする。
【００５５】
フルウェイライン動作モードでは、信号１６５のアサートは、データアレイ１１６のキャッシュヒットを示す（すなわち、要求されたデータがデータアレイ１１６で入手できることを示す）。さらに、フルウェイライン動作モードでは、ヒットロジック１２５によって、信号１６５は、変更なしにヒットロジック１２５を通過して、信号１６９として出力されることが可能になる。したがって、信号１６５および１６９がアサートされると、要求されたデータはデータアレイ１１６で入手することができる。
【００５６】
タグアレイ１１５は、受信したインデックス５６によって特定されたエントリに記憶されたタグを取り出し、取り出したタグをタグ比較ロジック１３３に送信する。また、タグ比較ロジック１３３は、読み出し要求アドレス５２からタグ５５を受け取る。タグ比較ロジック１３３は、タグアレイ１１５からのタグと、読み出し要求からのタグ５５とを比較する。これら２つのタグが一致すると、タグ比較ロジック１３３は信号１７５をアサートする。そうでない場合には、タグ比較ロジック１３３は信号１７５をディアサートする。
【００５７】
フルウェイライン動作モードでは、信号１７５のアサートは、データアレイ１１７のキャッシュヒットを示す（すなわち、要求されたデータがデータアレイ１１７で入手できることを示す）。さらに、フルウェイライン動作モードでは、ヒットロジック１２５によって、信号１７５は、変更なしにヒットロジック１２５を通過して、信号１７９として出力されることが可能になる。したがって、信号１７５がおよび１７９がアサートされると、要求されたデータはデータアレイ１１７で入手することができる。
【００５８】
ヒットロジック１２５から出力された信号１６９および１７９が共にディアサートされている場合には、キャッシュミスが発生している（すなわち、要求データがキャッシュ２５で入手できない）。したがって、読み出し要求はメモリシステム４２に送信され、メモリシステム４２において、要求されたデータがメモリ４３から取り出され、次いで、フィルオペレーションとしてキャッシュ２５に記憶される。
【００５９】
一方、信号１６５または１７９の一方がアサートされている場合には、キャッシュヒットが発生している。このような状況では、キャッシュ２５は、要求されたデータを取り出し、このデータをプロセッサ２２に送信する。これに関連して、データアレイ１１６は、アサートされた読み出し信号１４２に応答して、当該アレイ１１６が受信しているインデックス５５によって特定されたエントリに記憶されたウェイラインをマルチプレクサ（MUX）１８１に送信する。さらに、データアレイ１１７は、アサートされた読み出し信号１４２に応答して、当該アレイ１１７が受信しているインデックス５５によって特定されたエントリに記憶されたウェイラインをマルチプレクサ１８１に送信する。次に、マルチプレクサ１８１は、ヒットロジック１２５から出力された信号１６９および１７９に基づいて、キャッシュヒットに関連付けられたデータアレイ１１６または１１７からウェイラインを選択して送信する。詳細には、信号１６９がアサートされると、マルチプレクサ１８１は、データアレイ１１６からウェイラインを選択して送信する。信号１７９がアサートされると、マルチプレクサ１８１は、データアレイ１１７からウェイラインを選択して送信する。さらに、マルチプレクサ１８４が、マルチプレクサ１８１から送信されたウェイラインを受信する。読み出し要求に含まれたアドレス５２のオフセット５７に基づいて、マルチプレクサ１８４は、受信したウェイラインから要求されたデータを選択し、このデータをプロセッサ２２に送信する。したがって、キャッシュヒットが起こると、読み出し要求によって要求されたデータは、キャッシュ２５から取り出され、プロセッサ２２に送信される。
【００６０】
次に、ハーフウェイライン動作モードについて、キャッシュ２５のオペレーションを説明する。ハーフウェイラインモードでは、図４のキャッシュ２５は、以下で説明する場合を除いて、基本的にフルウェイラインモードと同様に動作する。モード信号１３７は、キャッシュ２５が、フルウェイラインモードではなくハーフウェイラインモードで動作することを示すためにディアサートされることに留意されたい。ハーフウェイラインモードでは、各セットのウェイの半分が、ウェイラインの上半分に割り当てられ、各セットのウェイの他の半分が、ウェイラインの下半分に割り当てられる。この実施形態では、ウェイ１がウェイラインの上半分に割り当てられ、ウェイ０がウェイラインの下半分に割り当てられる。
【００６１】
フィルオペレーションでは、キャッシュ２５は、ウェイラインの半分を表すメモリラインおよびアドレス５２をシステムインターフェース３６から受信し、フィル信号１４４がアサートされる。システムインターフェース３６から受信したウェイラインの半分がウェイラインの上半分である場合には、フィルロジック１２２は、ウェイラインの半分が、ウェイラインの上半分に割り当てられたウェイに確実に記憶されるようにする。この実施形態では、ウェイ１のみが、ウェイラインの上半分に割り当てられたウェイである。したがって、フィルロジック１２２は、ウェイラインの半分が、受信したアドレス５２のインデックス５６によって特定されたセットのウェイ１に確実に記憶されるようにする。上記は、オフセット５７の最上位ビットがアサートされた時に、フィル信号１５２および１５３をディアサートする一方、信号１５４および１５５をアサートすることによって行われる。他の実施形態において、特定されたセットの複数のウェイが、ウェイラインの上半分に割り当てられると、フィルロジック１２２は、置き換えアルゴリズムを使用して、これらのウェイの１つを選択し、ウェイラインの半分を記憶することができる。
【００６２】
システムインターフェース３６から受信したウェイラインの半分が、ウェイラインの下半分である場合には、フィルロジック１２２は、そのウェイラインの半分が、ウェイラインの下半分に割り当てられたウェイに確実に記憶されるようにする。この実施形態では、ウェイ０のみが、ウェイラインの下半分に割り当てられたウェイである。したがって、フィルロジック１２２は、ウェイラインの半分が、受信したアドレス５２のインデックス５６によって特定されたセットのウェイ０に確実に記憶されるようにする。上記は、オフセット５７の最上位ビットがディアサートされた時に、フィル信号１５２および１５３をアサートする一方、信号１５４および１５５をディアサートすることによって行われる。他の実施形態において、特定されたセットの複数のウェイが、ウェイラインの下半分に割り当てられると、フィルロジック１２２は、置き換えアルゴリズムを使用して、これらのウェイの１つを選択し、ウェイラインの半分を記憶することができる。
【００６３】
フィルオペレーションについて上記技法を実施することによって、ウェイラインの上半分のみがデータアレイ１１７に記憶され、ウェイラインの下半分のみがデータアレイ１１６に記憶される。したがって、ウェイラインの一部（すなわち、この実施形態では半分）のみを表す各メモリラインは、そのメモリラインのアドレスによって特定されたセット内において部分アソシアティブである。
【００６４】
キャッシュ２５が、ハーフウェイラインモードで動作している間、プロセッサ２２から読み出し要求を受信すると、タグ比較ロジック１３１および１３３は、上述した技法に従って信号１６５および１７５を出力する。一方、ヒットロジック１２５は、要求されたデータがウェイラインの上半分にあるのか、それとも下半分にあるのかに応じて、信号１６９または１７９の少なくとも一方を自動的にディアサートする。これに関連して、オフセット５７の最上位ビットがアサートされた場合、要求されたデータは、ウェイラインの上半分にある。このような例では、ヒットロジック１２５は、データアレイ１１６のキャッシュヒットが起こらないように、信号１６９を自動的にディアサートする。データアレイ１１６は、現在の動作モードではウェイラインの上半分を記憶せず、したがって、このアレイ１１６は、要求されたデータを記憶することができないことに留意されたい。したがって、信号１６９をディアサートすることによって、データアレイ１１６の誤ったキャッシュヒットが確実に起こらないようにされる。
【００６５】
オフセット５７の最上位ビットがディアサートされた場合、要求されたデータは、ウェイラインの下半分にある。このような例では、ヒットロジック１２５は、データアレイ１１７のキャッシュヒットが起こらないように、信号１７９を自動的にディアサートする。データアレイ１１７は、現在の動作モードではウェイラインの下半分を記憶せず、したがって、このアレイ１１７は、要求されたデータを記憶することができないことに留意されたい。したがって、信号１７９をディアサートすることによって、データアレイ１１７の誤ったキャッシュヒットが確実に起こらないようにされる。
【００６６】
ハーフウェイライン動作モードでは、マルチプレクサ１８１は、フルウェイライン動作モードについて上述したのと同様に、信号１６９および１７９に基づいてデータアレイ１１６および１１７からウェイラインの１つを選択する。さらに、マルチプレクサ１８４は、オフセット５７に基づいて、マルチプレクサ１８１の出力から、要求されたデータを選択し、マルチプレクサ１８４は、要求されたデータをプロセッサ２２に送信する。
【００６７】
図５は、ヒットロジック１２５を実施するのに使用できる例示的な回路を示している。図５の回路は、インバータ２５２、２つのＯＲゲート２５５および２５７、ならびに２つのＡＮＤゲート２６２および２６４を備える。モード信号１３７が、ＯＲゲート２５５および２５７に入力として提供される。さらに、オフセット５７の最上位ビット（ＭＳＢ）がＯＲゲート２５７に入力として提供され、インバータ２５２を通過した後にＯＲゲート２５５に入力として提供される。ＯＲゲート２５５の出力は、タグ比較ロジック１３１（図４）の出力信号１６５と共に、ＡＮＤゲート２６２に入力として提供され、ＯＲゲート２５７の出力は、タグ比較ロジック１３３（図４）の出力信号１７５と共にＡＮＤゲート２６４に入力として提供される。ＡＮＤゲート２６２および２６４は、マルチプレクサ１８１（図４）の制御に使用される信号１６９および１７９をそれぞれ出力する。
【００６８】
図５に示す回路によると、キャッシュ２５がフルウェイラインモードで動作している時（すなわち、モード信号１３７がアサートされている時）、オフセット５７の最上位ビットは、ＡＮＤゲート２６２および２６４の出力に影響を与えない。このような動作モードでは、ＡＮＤゲート２６２が出力する信号１６９は、タグ比較ロジック１３１からの入力信号１６５と一致し、ＡＮＤゲート２６４が出力する信号１７９は、タグ比較ロジック１３３からの入力信号１７５と一致する。一方、ハーフウェイラインモードでは、オフセット５７の最上位ビットは、信号１６９および１７９のいずれをアサートできるか、したがって、キャッシュヒットを示すことができるかを制御する。これに関連して、オフセット５７の最上位ビットがアサートされると、ウェイラインの上半分を記憶するデータアレイ１１７に関連した信号１７９のみをアサートすることができ、したがって、キャッシュヒットを示すことができる。一方、オフセット５７の最上位ビットがディアサートされると、ウェイラインの下半分を記憶するデータアレイ１１６に関連した信号１６９のみをアサートすることができ、したがって、キャッシュヒットを示すことができる。
【００６９】
次に、ハーフウェイライン動作モード中において読み出し要求にサービスを提供している間のキャッシュ２５の例示的な一アーキテクチャおよび機能を、特に図６および図７を参照して説明する。例として、上述したように、ウェイ０はウェイラインの下半分に割り当てられ、ウェイ１はウェイラインの上半分に割り当てられるものと仮定する。さらに、プロセッサ２２からの読み出し要求は、メモリブロック４９の１つに記憶された「特定されたウェイライン」と呼ばれるウェイラインの上半分にあるデータを要求するものと仮定する。また、要求されたデータは、キャッシュ２５がプロセッサ２２から読み出し要求を受信した時にウェイ１に記憶されるものと仮定する。
【００７０】
読み出し要求に応答して、キャッシュ２５は、図６のブロック３１２に示すように、キャッシュヒットがあるかどうか、換言すると、要求されたデータがキャッシュ２５で入手できるかどうかを判断する。キャッシュヒットがあるかどうかを判断するために、キャッシュ２５は、ウェイ０およびウェイ１のそれぞれについて、図７に示すプロセスを実行する。図４の信号１６９は、データアレイ１１６に関連したキャッシュヒットがあるかどうかを示し、信号１７９は、データアレイ１１７に関連したキャッシュヒットがあるかどうかを示すことに留意されたい。
【００７１】
したがって、ウェイ０の場合、読み出し要求におけるアドレス５２のインデックス５６は、タグアレイ１１４に提供される。タグアレイ１１４は、図７のブロック３１６に示すように、インデックス５６によって特定されたエントリに記憶されたタグを取り出し、このタグをタグ比較ロジック１３１に出力する。次に、タグ比較ロジック１３１は、ブロック３１９に示すように、取り出したタグを、読み出し要求に含まれているアドレス５２のタグ５５と比較する。これら２つのタグが一致しない場合には、データアレイ１１６は、特定されたウェイラインからのデータを記憶していない。したがって、ブロック３２５および３２１に示すように、キャッシュヒット表示は提供されない。具体的には、タグ比較ロジック１３１は、信号１６５をディアサートし、これによって、信号１６９は強制的にディアサートされる。
【００７２】
２つのタグが一致した場合には、「Yes」の判断がブロック３２５でなされ、データアレイ１１６は特定されたウェイラインからのデータを記憶している。しかしながら、データアレイ１１６は、ウェイラインの下半分に割り当てられているので、要求されたデータを記憶していない。これに関連して、データアレイ１１６は、特定されたウェイラインの下半分を記憶しており、要求されたデータは、特定されたキャッシュの上半分にある。さらに、ブロック３３２において、ヒットロジック１２５は、オフセット５７の最上位ビットがアサートされているかどうかを判断する。要求されたデータは、特定されたウェイラインの上半分にあるので、インデックス５７の最上位ビットはもちろんアサートされる。したがって、ヒットロジック１２５は、ブロック３３５および３３７に示すように、データアレイ１１６がウェイラインの上半分に割り当てられている場合にのみ、ウェイ０のキャッシュヒット表示を提供する。一方、データアレイ１１６はウェイラインの下半分に割り当てられているので、「No」の判断がブロック３３５でなされ、したがって、ブロック３３７の代わりに、ブロック３２１が実行される。したがって、ヒットロジック１２５は、信号１６９をディアサートし、それによって、データアレイ１１６、したがってウェイ０がキャッシュヒットに関連しないことを示す。インデックス５７の最上位ビットがディアサートされていたとしたら、データアレイ１１６、したがってウェイ０のキャッシュヒット表示は、ブロック３４１および３３７に示すように、信号１６９をアサートすることによって提供されたであろうことに留意されたい。
【００７３】
ウェイ１の場合、読み出し要求におけるアドレス５２のインデックス５６は、タグアレイ１１５に提供される。タグアレイ１１５は、図７のブロック３１６に示すように、インデックス５６によって特定されたエントリに記憶されたタグを取り出し、このタグをタグ比較ロジック１３３に出力する。次に、タグ比較ロジック１３３は、ブロック３１９に示すように、取り出したタグを、読み出し要求に含まれているアドレス５２のタグ５５と比較する。要求されたデータはデータアレイ１１７にあるので、２つのタグは一致するはずである。したがって、タグ比較ロジック１３３は、ブロック３２５で「Yes」の判断を行い、信号１７５をアサートする。これによって、信号１７９をヒットロジック１２５によってアサートすることが可能になる。
【００７４】
さらに、ブロック３３２において、ヒットロジック１２５は、オフセット５７の最上位ビットがアサートされているかどうかを判断する。上述したように、要求されたデータは、特定されたウェイラインの上半分にあるので、インデックス５７の最上位ビットはもちろんアサートされる。データアレイ１１７はウェイラインの上半分に割り当てられているので、「Yes」の判断がブロック３３５でなされ、したがって、ブロック３２１の代わりに、ブロック３３７が実行される。したがって、ヒットロジック１２５は、信号１７９をアサートし、それによって、データアレイ１１７、したがってウェイ１がキャッシュヒットに関連することを示す。
【００７５】
データアレイ１１６または１１７の少なくとも一方がキャッシュヒットに関連するので、「Yes」の判断が図６のブロック３１２でなされる。したがって、図６のブロック３５２に示すように、要求されたデータは、キャッシュヒットに関連したデータアレイ１１７から取り出される。これに関連して、インデックス５６はデータアレイ１１７に提供される。データアレイ１１７は、インデックス５６によって特定されたデータアレイエントリのデータを取り出し、このデータをマルチプレクサ１８１に送信する。このデータは、特定されたウェイラインの下半分を含むことに留意されたい。上述したように、信号１７９がアサートされるので、マルチプレクサ１８１は、データアレイ１１７が出力したデータを選択し、このデータをマルチプレクサ１８４に送信する。ブロック３５５において、マルチプレクサ１８４は、オフセット５７を使用して、読み出し要求によって要求された１つまたは複数のデータバイトのみを選択し、この１つまたは複数のデータバイトをプロセッサ２２に送信する。したがって、要求されたデータは、読み出し要求をメモリシステム４２にサブミットする必要なくプロセッサ２２に供給される。
【００７６】
要求されたデータがキャッシュ２５に記憶されていなかったならば、データアレイ１１６および１１７のいずれについてもキャッシュヒット表示は提供されなかったであろうことに留意されたい。そのような例では、「No」の判断が図６のブロック３１２でなされ、要求されたデータは、ブロック３６３に示すように、メモリシステム４２から取り出されることになる。さらに、ブロック３６６に示すように、キャッシュ２５のウェイラインの下半分を記憶するために、フィルオペレーションが、特定されたウェイラインの下半分について実行されることが好ましい。一方、ウェイラインの上半分にあるデータが、その後の読み出し要求によって実際に要求されない限り、特定されたウェイラインの上半分についてフィルオペレーションを実行する必要はない。
【００７７】
上述した例示的な一実施形態では、ｎバイトまたはｎ／２バイトのメモリラインサイズに対応するものとしてシステム２０を一般的に説明してきたことに留意すべきである。しかしながら、システム２０を、任意のメモリラインサイズ数に対応するように構成することができる。例えば、システム２０を、ｎバイト、ｎ／２バイト、およびｎ／４バイトのメモリラインサイズに対応するように構成することができる。そのような実施形態において、システム２０がｎ／４バイトのメモリラインサイズに対応している場合に、キャッシュ２５のウェイの４分の１を異なるウェイライン部分に割り当てることができ、オフセット５７の最上位の２ビットを使用して、システムインターフェース３６から受信したウェイラインの一部を記憶すべき適切なウェイを選択することができる。さらに、モード信号１３７は、システム２０が、ｎバイトのメモリラインサイズに対応するモードで動作しているのか、ｎ／２バイトのメモリラインサイズに対応するモードで動作しているのか、それともｎ／４バイトのメモリラインサイズに対応するモードで動作しているのかを示すために少なくとも２ビットを有することができる。
【００７８】
本発明によるキャッシュメモリシステム(25)は、キャッシュメモリ(31)とキャッシュロジック(33)を備える。キャッシュメモリは複数組のウェイを有する。キャッシュロジックは、キャッシュミスに応答してメモリラインを要求するよう構成される。メモリラインはウェイラインの一部を表す。キャッシュロジックは、ウェイラインのどの部分がメモリラインによって表されているかに基づいてウェイの１つを選択するように構成される。キャッシュロジックは、さらに、選択されたウェイのメモリラインを記憶するように構成される。
【図面の簡単な説明】
【００７９】
【図１】本開示の例示的な一実施形態によるキャッシュメモリシステムを使用するコンピュータシステムを示すブロック図。
【図２】図１に示すコンピュータシステムのデータにアクセスするのに使用できる例示的なアドレスを示すブロック図。
【図３】図１に示すシステム内のキャッシュメモリを示すブロック図。
【図４】図１に示すキャッシュメモリシステムの例示的な一実施形態を示すブロック図。
【図５】図４に示すヒットロジックの例示的な一実施形態を示す回路図。
【図６】読み出し要求に応答して、図１に示すキャッシュメモリシステムにより実施される例示的な一方法論を示すフローチャート。
【図７】読み出し要求に応答してキャッシュヒット判断を提供するか否かを判断することに関する、図１に示すキャッシュメモリシステムにより実施される例示的な一方法論を示すフローチャート。
【符号の説明】
【００８０】
２２  プロセッサ
２５  キャッシュメモリシステム
３１  キャッシュメモリ
３３  キャッシュロジック
４２  メモリシステム
【図１】
2006018841.tif 000003
【図２】
2006018841.tif 000004
【図３】
2006018841.tif 000005
【図４】
2006018841.tif 000006
【図５】
2006018841.tif 000007
【図６】
2006018841.tif 000008
【図７】
2006018841.tif 000009