(57)【要約】【課題】マルチウェイ群連想方式キャッシュ・メモリ内のロックダウン動作の制御。【解決手段】マルチウェイ群連想方式キャッシュ・メモリ６には、キャッシュ・メモリ６内にロックされている（すなわち、追い立てを受けない）データを記憶するよう当該キャッシュ・メモリの部分を制御するためのロックダウン制御回路２６、４８が設けられる。プログラム可能なロックダウン・データ３８、４０、４２、４４、４６は、どのウェイが任意のロックされた部分を含むかを特定し、また、ロックされた部分の各ウェイ内のサイズをも特定する。このように、個々のキャッシュ・ウェイは部分的にロックされ得る。【選択図】図２
2008152780.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのキャッシュ・ウェイ内で、ロックされた部分及びロックされない部分を選択的に提供するよう、プログラム可能なロックダウン・データに応答するロックダウン制御回路を有するマルチウェイ群連想方式キャッシュ・メモリ。
【請求項２】
前記ロックされた部分及び前記ロックされない部分は、前記プログラム可能なロックダウン・データによって特定されるそれぞれの可変サイズを有する請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項３】
前記プログラム可能なロックダウン・データは、前記ロックされた部分及び前記ロックされない部分の一方のサイズを特定し、前記ロックされた部分及び前記ロックされない部分の前記他方は、前記少なくとも１つのキャッシュ・ウェイの残りに対応するサイズを有する請求項２に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項４】
前記マルチウェイ群連想方式キャッシュの各キャッシュ・ウェイは、前記プログラム可能なロックダウン・データに応答して作用する前記ロックダウン制御回路により、ロックされた部分及びロックされない部分に分割可能である請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項５】
前記ロックダウン制御回路及び前記プログラム可能なロックダウン・データは、独立的に特定されるべき各キャッシュ・ウェイのロックされた部分及びロックされない部分のサイズを提供する請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項６】
前記プログラム可能なロックダウン・データは、前記少なくとも１つのキャッシュ・ウェイが任意のロックされた部分を有するか否かを特定するウェイ・データを含む請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項７】
前記プログラム可能なロックダウン・データは、前記ロックされた部分及び前記ロックされない部分の少なくとも一方のサイズを特定するセット・データを含む請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項８】
前記セット・データは、前記ロックされた部分のサイズを特定する請求項７に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項９】
前記プログラム可能なロックダウン・データは、所定のキャッシュ・ラインから出発する少なくとも１つのキャッシュ・ウェイ内で、隣接のキャッシュ・ラインの数として前記ロックされた部分及び前記ロックされない部分の１つのサイズを特定する請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１０】
前記プログラム可能なロックダウン・データは、マスク値として前記ロックされた部分及び前記ロックされない部分の１つのサイズを特定し、前記マスク値の異なった部分は、前記少なくとも１つのキャッシュ・ウェイの対応の部分が、前記ロックされた部分の一部であるかまたは前記ロックされない部分の一部であるかを特定する請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１１】
それぞれのキャッシュ・ウェイ内の１つ以上の可能なビクティム・キャッシュ・ラインの中からキャッシュ・ラインフィル動作のためのキャッシュ・ライン・ビクティムとして働くようキャッシュ・ラインを選択するためのメモリ・アドレスにおいて記憶されたデータのそれぞれにおいてキャッシュ・ミスに応答するビクティム選択回路を備えた請求項１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１２】
前記ビクティム選択回路は、前記キャッシュ・ミスについての前記少なくとも１つのキャッシュ・ウェイ内でキャッシュ・ライン・ビクティムとして働くであろう対応のキャッシュ・ラインが、前記ロックされた部分内にあって前記キャッシュ・ラインフィル動作に対して利用可能でないか否かを決定するために、前記メモリ・アドレスのインデックス部分に応答する請求項１１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１３】
前記ビクティム選択回路は、前記キャッシュ・ラインが前記ロックされた部分内にあるか否かを前記インデックス部分から決定するとき、加算動作に関連したプログラム命令を処理するために使用された加算器回路の少なくとも部分を再使用する請求項１２に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１４】
前記ビクティム選択回路は、前記１つ以上の可能なビクティム・キャッシュ・ラインのいずれが有効データを記憶しているかを特定する有効化データに応答する請求項１１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１５】
前記ビクティム選択回路は、ビクティム選択アルゴリズムを用いて前記ビクティム・キャッシュ・ラインを選択する請求項１１に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１６】
前記ビクティム選択アルゴリズムは、
ランダム選択アルゴリズム、
ラウンド・ロビン選択アルゴリズム、及び
最近最も使用されていない選択アルゴリズム、
の１つ以上を含む請求項１５に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１７】
前記ビクティム選択回路は、有効データを記憶しないキャッシュ・ラインを優先的に選択するアルゴリズムを含むビクティム選択アルゴリズムを用いて前記ビクティム・キャッシュ・ラインを選択する請求項１４に記載のマルチウェイ群連想方式キャッシュ・メモリ。
【請求項１８】
プログラム可能なロックダウン・データに応答して、少なくとも１つのキャッシュ・ウェイ内のロックされた部分及びロックされない部分を選択的に提供するステップを含むマルチウェイ群連想方式キャッシュ・メモリを制御する方法。
【請求項１９】
前記ロックされた部分及び前記ロックされない部分は、前記プログラム可能なロックダウン・データによって特定されるそれぞれの可変サイズを有する請求項１７に記載の方法。
【請求項２０】
前記プログラム可能なロックダウン・データは、前記ロックされた部分及び前記ロックされない部分の一方のサイズを特定し、前記ロックされた部分及び前記ロックされない部分の前記他方は、前記少なくとも１つのキャッシュ・ウェイの残りに対応するサイズを有する請求項１９に記載の方法。
【請求項２１】
前記マルチウェイ群連想方式キャッシュの各キャッシュ・ウェイは、前記プログラム可能なロックダウン・データに応答して、ロックされた部分及びロックされない部分に分割可能である請求項１８に記載の方法。
【請求項２２】
前記プログラム可能なロックダウン・データは、各キャッシュ・ウェイのロックされた部分及びロックされない部分のサイズが独立的に特定されるのを許容する請求項１８に記載の方法。
【請求項２３】
前記プログラム可能なロックダウン・データは、前記少なくとも１つのキャッシュ・ウェイが任意のロックされた部分を有するか否かを特定するウェイ・データを含む請求項１８に記載の方法。
【請求項２４】
前記プログラム可能なロックダウン・データは、前記ロックされた部分及び前記ロックされない部分の少なくとも１つのサイズを特定するセット・データを含む請求項１８に記載の方法。
【請求項２５】
前記セット・データは、前記ロックされた部分のサイズを特定する請求項２４に記載の方法。
【請求項２６】
前記プログラム可能なロックダウン・データは、所定のキャッシュ・ラインから出発する少なくとも１つのキャッシュ・ウェイ内で隣接したキャッシュ・ラインの数として前記ロックされた部分及び前記ロックされない部分の１つのサイズを特定する請求項１８に記載の方法。
【請求項２７】
前記プログラム可能なロックダウン・データは、マスク値として前記ロックされた部分及び前記ロックされない部分の１つのサイズを特定し、前記マスク値の異なった部分は、前記少なくとも１つのキャッシュ・ウェイの対応の部分が、前記ロックされた部分の一部であるかまたは前記ロックされない部分の一部であるかを特定する請求項１８に記載の方法。
【請求項２８】
メモリ・アドレスにおいて記憶されたデータのそれぞれにおけるキャッシュ・ミスに応答して、それぞれのキャッシュ・ウェイ内の１つ以上の可能なビクティム・キャッシュ・ラインの中からキャッシュ・ラインフィル動作のためのキャッシュ・ライン・ビクティムとして働くようキャッシュ・ラインを選択することを含む請求項１８に記載の方法。
【請求項２９】
前記メモリ・アドレスのインデックス部分に応答して、前記キャッシュ・ミスについての少なくとも１つのキャッシュ・ウェイ内のキャッシュ・ライン・ビクティムとして働くであろう対応のキャッシュ・ラインが前記ロックされた部分内にあって、前記キャッシュ・ラインフィル動作に対して利用可能であるか否かを決定する請求項２８に記載の方法。
【請求項３０】
前記キャッシュ・ラインが前記ロックされた部分内にあるか否かを前記インデックス部分から決定することは、加算動作に関連するプログラム命令を処理するために用いられる加算器回路の少なくとも部分を再使用する請求項２９に記載の方法。
【請求項３１】
前記選択することは、前記１つ以上の可能なビクティム・キャッシュ・ラインのいずれが有効データを記憶しているかを特定する有効化データに応答する請求項１８に記載の方法。
【請求項３２】
前記選択することは、ビクティム選択アルゴリズムを用いる請求項２８に記載の方法。
【請求項３３】
前記ビクティム選択アルゴリズムは、
ランダム選択アルゴリズム、
ラウンド・ロビン選択アルゴリズム、及び
最近最も使用されていない選択アルゴリズム、
の１つ以上を含む請求項３２に記載の方法。
【請求項３４】
前記選択することは、有効データを記憶していないキャッシュ・ラインを優先的に選択するアルゴリズムを含むビクティム選択アルゴリズムを用いる請求項３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュ・メモリの分野に関し、特に、キャッシュ・メモリ内のロックダウン動作の制御に関する。
【背景技術】
【０００２】
マルチウェイ群連想方式キャッシュ・メモリ（multi-way set associative cache memories）を提供することは知られている。このようなメモリにおいては、複数のキャッシュ・ウェイ（cache ways）が提供され、各キャッシュ・ウェイは、多数のキャッシュ・ラインを含み、各キャッシュ・ラインは、対応のメモリ・アドレスから取られるデータの多数のバイトを記憶する。与えられたメモリ・アドレスからのデータは、当該のメモリ・アドレスの部分（インデックス部分）に依存して選択されたキャッシュ・ライン内のキャッシュ・ウェイのいずれかに通常記憶され得る。これは、既知のマルチウェイ群連想方式キャッシュ・メモリの動作である。
【０００３】
また、このようなキャッシュ・メモリ内にロックダウン機構を提供することも知られている。これらのロックダウン機構は、特定のデータ（それが特定の命令であろうと、特定のデータ値であろうと）をキャッシュ・ウェイ内にロードすることにより、そして次に、その中に記憶されたデータがキャッシュ・メモリの継続している使用中に置き換えられないように該キャッシュ・ウェイをマーキングすることにより動作する。キャッシングされる（cached）べき他のデータは、記憶されて、引き続き他のキャッシュ・ウェイ内に追い立てられるが、ロック・キャッシュ・ウェイ内のデータはキャッシュ内に記憶されたままであり、迅速なアクセスに対して利用可能である。このようなロックダウン機構の代表的な使用は、ロックされたキャッシュ・ウェイ内に性能臨界命令（performance critical instructions）を記憶して、これらの命令が必要とされたときにこれらがキャッシュから利用可能となるようにすることである。臨界中断処理コード(Critical interrupt processing code)は、必要とされたときに予測可能な時間量で迅速に利用可能であるようにキャッシュ・ウェイ内でロックダウンされ得る例示的命令であるであろう。
【発明の開示】
【課題を解決するための手段】
【０００４】
一態様に鑑みて、本発明は、少なくとも１つのキャッシュ・ウェイ内で、ロックされた部分及びロックされない部分を選択的に提供するよう、プログラム可能なロックダウン・データに応答するロックダウン制御回路を有するマルチウェイ群連想方式キャッシュ・メモリを提供する。
【０００５】
本技術は、多くの環境において、キャッシュ・ウェイの走査間隔（グラニュアリティ）でのキャッシュ・メモリの使用をロックダウンすることが非効率であるということを認識する。それは、キャッシュ・ウェイの部分だけが、キャッシュ・メモリ内で永久に利用可能にしてロックダウンすることが望まれるデータを記憶するために実際に用いられているということであり得る。ウェイ走査間隔（ウェイ・グラニュアリティ）の場合、当該キャッシュ・ウェイの残りの部分は、キャッシュ・メモリの有効性を減ずる態様で通常のキャッシュ動作において用いるためには利用可能でない。本技術は、少なくとも１つのキャッシュ・ウェイが、ロックされた部分及びロックされない部分を含むようロックダウン回路によって制御され得る、ということを提供することによって、この問題を識別して処理する。従って、キャッシュ内で永久に利用可能にしてロックダウンすることが望まれるデータは、キャッシュ・ウェイのロックされた部分内に記憶され得、キャッシュ・ウェイの残りの部分は、ロックされないことができて、データの一時記憶のための通常のキャッシュ動作において用いるために利用可能であり得る。キャッシュ・メモリを設けることは、回路領域及び電力のオーバーヘッドに関して比較的高価であり、従って、本技術に従ってこの提供されたリソースの改良された使用を行うことは長所的である。
【０００６】
本技術は、キャッシュ・ウェイが、選択的にロックされるまたはロックされないことができる固定サイズ部分及び永久にロックされないままに残される部分に単に分割された場合に幾つかの利点を提供するであろうが、該技術の柔軟性及び有用性は、ロックされた部分及びロックされない部分が、プログラム可能なロック・ダウン・データによって特定されるそれぞれの可変サイズを有するときに改善される。この方法で、ロックされた部分のサイズは、該ロックされた部分内に記憶することが望まれるデータの実際のサイズに調整され得る。
【０００７】
ロックされた部分及びロックされない部分のサイズは、プログラム可能なロックダウン・データ内で別々に特定され得ることが可能であるが、これらのサイズの一方がプログラム可能なロックダウン・データによって特定され、他方のサイズが当該の残りのキャッシュ・ウェイであることによって導出される場合には一層効率的である。
【０００８】
本技術は、キャッシュ・ウェイの１つだけについて有用に用いられ得るということが上述のことから理解されるであろうが、該技術の及びキャッシュ・メモリの柔軟性及び有用性は、キャッシュ・ウェイの各々が本技術に従ってロックされた部分及びロックされない部分に分割可能であるときに改善される。この方法で、例えば、異なったキャッシュ・ウェイが、データの異なったロックダウン部分を記憶するよう向けられ得、各ウェイのロックされた部分の個々のサイズは、当該ウェイに記憶されているデータの対応のサイズに調整される。
【０００９】
各ウェイにおけるロックされた部分のサイズを独立的に制御することができることは望ましいが、ロックされた部分のサイズがロックされた部分を提供するウェイを横切って一定に保たれなければならなかった場合でさえ幾つかの利点が得られることが理解されるであろう。
【００１０】
プログラム可能なロックダウン・データは、種々の異なった形態で表現され得るということが理解されるであろうが、各ウェイが任意のロックされた部分を有するか否かを特定するデータを有するロックダウン・データを提供すること、並びに、さらに、このようなロックされた部分のサイズを独立的に特定すること、が長所的に単純かつ直接的である。ロックされた部分が提供されないならば、次に、キャッシュは、古典的なＮ−ウェイ群（セット）連想キャッシュとして動作し得る。
【００１１】
プログラム可能なロックダウン・データ内のこのサイズ・データは、ロックされた部分のサイズまたはロックされない部分のサイズについて表現され得るが、ロックされた部分のサイズについて表現されるのが便宜的である。
【００１２】
ロックされた部分は、特定されている範囲内の頂部及び底部のキャッシュ・ラインでロックされるべきキャッシュ・ラインの範囲のような種々の異なった態様で形成され得る。このような履行は、比較的ハードウェア的に高価な全比較器が用いられることを必要とするであろう。従って、長所的には、ロックされた部分が、所定の位置（例えば、キャッシュ・ウェイの一端）から出発してセット・データ（すなわち、当該ウェイのためのロックされた部分のサイズ）によって特定されるキャッシュ・ラインの数に渡って延びるキャッシュ・ラインの隣接した組である一層簡単な履行が提供され得る。代案は、マスク・タイプの配列を用いることであり、該配列において、セット・データは、所定の領域がロックされているかまたはされていないかを特定する値を含む（このような配列は、幾つかの特定の履行／使用に対して、所望ならば、キャッシュ・ウェイ内の非隣接のロックされた部分を提供するために用いられ得る）。キャッシュ・ウェイのロックされた部分を特定するためのロックダウン機構を提供したので、ビクティム選択回路は、ラインフィル動作を行うことが望まれるときにどのキャッシュ・ラインが内在的キャッシュ・ビクティムであるかを決定するに際し、ウェイ内の個々のキャッシュ・ラインのロックされたまたはロックされない状況に応答する。例として、特定のラインフィル動作が、キャッシュ・ウェイのすべてにおいてロックされない集合キャッシュ・ラインに対応し、従って、可能なキャッシュ・ライン・ビクティムの数がキャッシュ・ウェイの数に等しいということがあり得る。代替的には、可能なキャッシュ・ライン・ビクティムであり得るキャッシュ・ラインの幾つかまたはすべてが、キャッシュ・ウェイ内でロックされ、ラインフィル動作に対して利用可能でないということがあり得る。キャッシュ・ラインのすべてが、特定のキャッシュ・ラインフィル動作に対して利用可能でないならば、次に、当該のデータは、キャッシュ・メモリ内でロックダウンされるデータが一層重要と見なされたので、キャッシュされることができないことがあり得るけれども、このような状況はまれであるようであり、ほとんどの場合においては、ある場合にキャッシュ・メモリ内のどこかでラインフィルを行うことが可能でなかったようにキャッシュを配列することは不利であるであろう。
【００１３】
本技術によるビクティム選択回路は、特定のキャッシュ・ラインがロックされるかまたはロックされないかを決定するよう特定のキャッシュ・ラインフィルが或るウェイ内で生じる場所に応答する。比較的低いハードウェアのオーバーヘッドでもってこの追加の能力を提供することを容易にするために、好ましい技術は、本技術が使用される多くのシステム内でプログラム命令と関連した加算動作を行うために代表的には提供される加算器回路の少なくとも部分を再使用する。
【００１４】
それぞれのウェイ内で個々のキャッシュ・ラインのロックされたまたはロックされない状況に応答することに加えて、ビクティム選択回路は、また、それらのキャッシュ・ラインが有効データを記憶するかまたは記憶しないかに応答し得る。もう１つのキャッシュ・ウェイから有効データを追い立てることよりもむしろ、当該のキャッシュ・ラインが有効データを記憶していないときにウェイ内のキャッシュ・ラインにラインフィルを行うことが一般的には一層良好であろう。
【００１５】
ビクティム選択回路は、広範な種々の異なった形態を取ることができ、ランダム選択アルゴリズム、ラウンド・ロビン・アルゴリズム、最近最も使用されていないアルゴリズム、及び有効データを記憶しないキャッシュ・ラインを優先的に選択するアルゴリズム、のような多くの既知のアルゴリズムの１つ、またはそのようなアルゴリズムの混合であることができるビクティム選択アルゴリズムを代表的には履行する。他のアルゴリズムも可能である。
【００１６】
もう１つの態様に鑑みて、本発明は、プログラム可能なロックダウン・データに応答して、少なくとも１つのキャッシュ・ウェイ内のロックされた部分及びロックされない部分を選択的に提供するステップを含むマルチウェイ群（セット）連想方式キャッシュ・メモリを制御する方法を提供する。
【００１７】
本発明の上述の及び他の目的、特徴及び長所は、添付図面と共に読まれるべき実施形態の以下の詳細な説明から明瞭となるであろう。
【発明を実施するための最良の形態】
【００１８】
図１は、プロセッサ・コア４、マルチウェイ群連想方式キャッシュ・メモリ６及び主メモリ８を含むデータ処理システム２を図式的に示す。プロセッサ・コア４は、レジスタ・ファイル１０、乗算器１２、シフタ１４及び加算器１６を備えるデータ経路を含む。命令フェッチ・ユニット１８は、キャッシュ・メモリ６及び主メモリ８からプログラム命令をフェッチし（取り込み）、それらを命令パイプライン２０に供給し、そこからそれらはデコーダ２２によってデコーディングされて、データ経路１０、１２、１４、１６並びにプロセッサ・コア４内の他の素子を制御するための制御信号を発生する。プロセッサ・コア４は、典型的には、さらなる多くの回路素子を含むが、これらは明瞭さのために図１からは省略されているということを理解されたし。
【００１９】
プロセッサ・コア４内には、また、幾つかの構成レジスタ２６を記憶する構成コプロセッサ２４も含まれている。これらの構成レジスタ２６は、どのキャッシュ・ウェイが幾つかのロックされた部分を含むかを、そして、それらのキャッシュ・ウェイ内のロックされた部分のサイズを、特定するプログラム可能なロックダウン・データを記憶するために用いられる。このように、構成レジスタ２６は、それらが、キャッシュ・ウェイのロッキングされた部分内に存在するものとして示されているキャッシュ・ラインにラインフィル（linefill）しないために、ロックダウン・データに応答するビクティム（victim:犠牲者）選択回路（図１には図示せず）にそれらの信号を供給するという点において、ロックダウン制御回路の部分を形成する。広範な用語において、図１のデータ処理システム２は、プログラム命令を実行して、データ値上にデータ処理動作を行うよう動作する。これらのプログラム命令及びデータ値は、キャッシュ・メモリ６及び主メモリ８内に記憶される。しばしば用いられるデータ値／命令または迅速なアクセスのために必要とされるデータ値／命令は、キャッシュ・メモリ６内に記憶され及び／またはロック・ダウンされる。プログラム命令またはデータ値に関してキャッシュ・ミスが生じたならば、次に、フェッチが主メモリに行なわれ、ラインフィル動作は、データがキャッシュ・メモリ６を通してプロセッサ・コア４に戻されて通されたときに行なわれ、それにより、当該のデータは、次に、再度アクセスされた場合に用いるためにキャッシュ・メモリ６内に記憶される。このタイプの配列は、この技術分野において知られており、ここではさらには説明しない。
【００２０】
図２は、マルチウェイ群連想方式キャッシュ・メモリ６を一層詳細に図式的に示す。この例においては、キャッシュ・メモリ６は、キャッシュ・ウェイＷ０、Ｗ１、Ｗ２、及びＷ３を有する４ウェイキャッシュ・メモリである。この例においては、各キャッシュ・ライン２８は、データの６４バイトを記憶する。従って、仮想アドレスＶＡ［５：０］の下位６ビットは、キャッシュ・ライン２８内のどのバイトがアクセスされるべきかを特定する。命令またはデータ値は、特定の履行に依存して、ワード整列された、半ワード整列された、もしくはバイト整列された態様でアクセスされて操作され得る。また、キャッシュ・ライン・サイズは変化し得、６４バイトは単に一例であるということを理解されたし。この例においては、仮想アドレスＶＡ［１２：６］の７ビットは、どのキャッシュ・ラインが該仮想アドレスからのデータ値を記憶するための候補であるかを特定するインデックス値を提供する。一層高次の仮想アドレス・ビットは、通常の方法でキャッシュＴＡＧ値を形成し、非コンパーソン（not comparson）及びヒット信号生成目的のためにキャッシュ・メモリのキャッシュＴＡＧ部分に記憶される。
【００２１】
図２の特定の例に示されるように、キャッシュ・ウェイ（ｃａｃｈｅ  ｗａｙｓ）Ｗ０及びＷ２は、何等のロック・ダウンを受けず、これらのキャッシュ・ウェイのすべてはラインフィル上にデータを記憶するために利用可能である。それに反して、キャッシュ・ウェイＷ１は、ロックダウンを受け、ロッキングされた部分３０及びロッキングされない部分３２を有する。同様に、キャッシュ・ウェイＷ３は、ロッキングされた部分３４及びロッキングされない部分３６を有する。示された例においては、キャッシュ・ウェイＷ１のロッキングされた部分３０は、サイズにおいて３２のキャッシュ・ラインであり、それに反して、キャッシュ・ウェイＷ３のロッキングされた部分３４は、サイズにおいて４８のキャッシュ・ラインである。キャッシュ・ウェイＷ１のロッキングされない部分３２は、サイズにおいて９６のキャッシュ・ラインであり、その理由は、これがそのキャッシュ・ウェイにおけるキャッシュ・ラインの残りであるからであり、そしてキャッシュ・ウェイＷ３のロッキングされない部分３６は、サイズにおいて８０のキャッシュ・ラインであり、その理由は、再度、これがキャッシュ・ウェイＷ３の使用されない部分であるからである。キャッシュ・ウェイにおけるキャッシュ・ラインの数も、キャッシュ・ラインにおけるバイトの数が変り得るのと同じ方法で特定の設計履行に依存して変り得ることを理解されるであろう。ロッキングされた部分３０及び３４は、そこにロッキングされるべきデータ（それが命令であろうとデータ値であろうと）のサイズと整合するサイズを有するよう選択され得る。この例においては、ロッキング・ダウンされるべきデータは、ウェイ境界（a way boundary）と整列されるようメモリ・アドレス空間内に配列されることを理解されるであろう。この制約は、当該のキャッシュ・ウェイ内のどこかに配置されたキャッシュ・ラインの範囲についてロッキングされた部分３０を特定することにより（応じることが困難ではないけれども）避けられ得るということが可能である。このような範囲は、開始値及び終了値で、またはキャッシュ・ウェイの部分に対応するマスクのビットを有するマスク値によって用いて特定され得る。
【００２２】
図２は、（ランダム・アルゴリズム、ラウンド・ロビン・アルゴリズム、最近最も使用されなかったアルゴリズム、無効データ好適データ・アルゴリズムまたはもう１つのアルゴリズムのようなアルゴリズムの１つまたは組み合わせに基づいた種々の異なった形態のアルゴリズムであって良い）ビクティム（犠牲）選択アルゴリズムを履行するよう働くビクティム選択回路４８を示す。キャッシュ・ミスが生じてデータが主メモリ８からフェッチされるときにラインフィル動作が行われるべきであるキャッシュ・ウェイを選択するために、ビクティム選択回路４８には、ミス信号、どのウェイが各ウェイ（ＳＬｉ［６：０］）内の任意のロッキングされた部分のサイズを示す任意のロッキングされた部分（ＷＬｉ）信号を含むかを示す信号、キャッシュ・ミス（ＶＡ［１２：６］）を生じるメモリ場所の仮想アドレスのインデックス部分、及び与えられたインデックス値に対するどのウェイが有効データ（ｖａｌｉｄｉ）を含むかを示す信号、を含む種々の入力が提供される。これらの入力を用いて、ビクティム選択回路４８は、キャッシュ・ラインフィル動作がキャッシュ・ミス上に行われるであろうキャッシュ・ウェイの１つを選択する。関連のあるキャッシュ・ラインがロッキングされるウェイを選択しないことによって、ビクティム選択回路４８は、これらのキャッシュ・ラインのロッキングされた性質を保存する。従って、この例示的履行においては、ビクティム選択回路４８と組み合わせて動作する構成レジスタ２６は、ロックダウン制御回路を提供するよう働くということが分かるであろう。
【００２３】
図３、図４、及び図５は、６４バイトのキャッシュ・ライン長さを有するサイズにおいて３２ＫＢのキャッシュである例示的実施形態に関する。
【００２４】
図３は、図１の構成コプロセッサ２４の構成レジスタ２６の幾つかを図式的に示す。この例において、レジスタ３８は、その４つの最下位ビットとして、図２の例示的履行の４つのキャッシュ・ウェイが幾つかのロックされた部分を含むか否かを示すフラグを含む。ウェイ・ロックされたフラグＷＬ０−ＷＬ３が“０”に等しいならば、次に、当該のキャッシュ・ウェイは、幾つかのロックされた部分を含まず、それに反して、もし値が“１”ならば、次に、それは、ロックされた部分を含む。レジスタ４０、４２、４４及び４６は、異なったキャッシュ・ウェイＷ０  Ｗ３にそれぞれ対応し、それらの最下位の７ビットとして、それぞれのウェイのロックされた部分３０、３４のためのセットされたデータ・サイズを示す値を特定するサイズを含む。７ビット値は、０及び１２７の間の数を特定することができ、従って、単一のキャッシュ・ラインの走査間隔（グラニュラリティ：granularity）においてロックされた部分３０、３４のサイズを特定する。本技術は、一層低い走査間隔（グラニュラリティ）を有する長所を有してさらに用いられ得るということが理解されるであろう。一層一般的には、値ＳＬｉを特定するサイズは、ＳＬｉ［Ｓ‐１：０］であり得、ここに、Ｓは、与えられたウェイにおける利用可能な群（セット）の数であり、すなわち、４ウェイを有する３２ＫＢキャッシュに対して、群（セット）の数は、
Ｓ＝ｌｏｇ２（３２７６８／４（ｗａｙｓ）／６４（ｂｙｔｅｓ‐ｐｅｒ‐ｌｉｎｅ））＝ｌｏｇ２（１２８）＝７
によって与えられ、そして、ＶＡ［ＭＢ：Ｂ］の範囲は、以下によって見つけられ得る：
Ｂ＝ｌｏｇ２（ｂｙｔｅｓ‐ｐｅｒ‐ｌｉｎｅ）＝ｌｏｇ２（６４）＝６
ＭＢ＝Ｓ‐１＋Ｂ＝１２
【００２５】
図４は、どのウェイが、それらのロックされたまたはアンロックされたデータに依存したラインフィルにおいて用いるために、利用可能であるかを、ビクティム選択回路４８が、キャッシュ・ミスに対応する与えられた仮想アドレスに対して、如何に決定するかを示すフロー図である。ステップ５０において、処理は、ビクティム選択が必要とされるまで待機する。ステップ５において、ウェイ・インディケータは、（Ｎ−ウェイ群連想キャッシュ・メモリに対して）０にセットされる。ステップ５４において、現在のウェイに対するウェイ・データＷＬｉは、当該ウェイが任意のロックされた部分を含むということをそれが示すか否かを見るためにチェックされる。もし、ウェイ・データＷＬｉが“１”に等しくないならば、次に、当該のウェイは、任意のロックされたデータを含まず、処理はステップ５６に進み、そこで、当該のウェイは利用可能なものとしてマーキングされる。その後、処理はステップ５８に進み、その点において、ウェイ・インディケータは増分され、ステップ６０において、それは、最後のウェイに達したか否かを見るために検査される。最後のウェイに達すると、次に、処理は終了する。
【００２６】
ステップ５４における決定が、当該のウェイがロックされた部分を含む（ＷＬｉ＝Ｉが真実である）ということであったならば、次に、ステップ６２は、当該の仮想アドレスのインデックス部分ＶＡ［１２：６］を用いて（この例においては、キャッシュは仮想的にアドレス指定されるが、物理的なキャッシュも用いられ得るということが可能である）、インデックスが当該ウェイのロックされた部分の外側にあるか否かを決定するために当該のウェイのためのセット・データＳＬｉと比較する。加算器１６は、この比較を行なうために（少なくとも部分的に）再使用され得る。当該のインデックスがロックされた部分の外側にあるならば、次に、処理は再度ステップ５６に進み、そこで、当該ウェイは、利用可能としてマーキングされる。インデックスがロックされた部分の外側にないならば、次に、処理はステップ５４に進み、そこで、当該ウェイは利用可能でないとしてマーキングされ、処理は以前のようにステップ５８に進む。
【００２７】
図５は、異なったウェイが、係属中のラインフィルのために用いられるべき可能なキャッシュ・ラインのための有効データを含むか否かの決定が、与えられたインデックス値に対して如何に行われるかを図式的に示す。ステップ６６において、処理は、ビクティムが選択のために必要とされるまで待機する。ステップ６８において、ウェイ・インディケータは０にセットされる。ステップ７０において、キャッシュ・ミスのインデックス値に対応するキャッシュ・ラインのための有効フラグが、該データが有効でないということを示す値にセットされるか否かに関しての決定が行われる。該データが有効でないならば、次に、処理はステップ７２に進み、そこで、該キャッシュ・ウェイのためのウェイ有効フラグが非有効を示すためにセットされる。処理は、次に、ステップ７４に進み、そこで、ウェイ・インディケータが増分され、ステップ７６において、最後のウェイに達したか否かに関しての検査が行なわれる。ステップ７０における決定が、該ウェイが当該のインデックスのための有効データを含まなかったというものであったならば、次に、これは、係属中のインデックス値のための当該ウェイに対するキャッシュ・ラインが有効データを含むということを示すようウェイ有効インディケータをセットすることにより、ステップ７８によってマーキングされる。
【００２８】
図３、４及び５は１つの特定の例のサイズ／構成であるが、一層一般的には、キャッシュは、ウェイＷＬ［Ｎ−１］ ．．．ＷＬ［３］ ＷＬ［２］ ＷＬ［１］ ＷＬ［０］から形成され、ここに、Ｎキャッシュ・ウェイの数である。このキャッシュにおいて、サイズを特定する値は、ＳＬ（ｎ−１）［Ｓ−１：０］ ．．．ＳＬ（３）［Ｓ−１：０］ ＳＬ（２）［Ｓ−１：０］ ＳＬ（１）［Ｓ−１：０］ ＳＬ（０）［Ｓ−１：０］によって与えられ、ここに、Ｓは、キャッシュ・ウェイごとのセットの数である。図４において、ステップ６２は、ＶＡ［Ｓ−１＋Ｂ：Ｂ］＞ＳＬｉ［Ｓ−１：０］となるであろうし、図５において、ステップ７０は、Ｖａｌｉｄ（ｉ）［ＶＡ［Ｓ−１＋Ｂ：Ｂ］］＝０となるであろう。
【００２９】
本発明の説明的な実施形態を添付図面を参照してここに詳細に説明してきたけれども、本発明はそれらの精密な実施形態に制限されるものでなく、種々の変更並びに修正が、特許請求の範囲によって限定される本発明の範囲及び精神から逸脱することなく、それら実施形態に対して当業者によって行なわれ得るということを理解すべきである。
【図面の簡単な説明】
【００３０】
【図１】キャッシュ・メモリを組み込んだデータ処理システムを図式的に示す図である。
【図２】マルチウェイ群（セット）連想方式キャッシュ・メモリを図式的に示す図である。
【図３】ロックダウン制御回路の一部を形成する幾つかのプログラム可能なレジスタを図式的に示す図である。
【図４】特定のウェイ内のキャッシュ・ラインがそのロックされないまたはロックされる状況に基づくラインフィルに対して利用可能であるかまたは利用可能でないかの決定を概略的に示すフロー図である。
【図５】特定のウェイがラインフィル動作のための候補であるキャッシュ・ラインにおける有効データを記憶しているか否かの決定を概略的に示すフロー図である。
【符号の説明】
【００３１】
２      データ処理システム
４      プロセッサ・コア
６      マルチウェイ群連想方式キャッシュ・メモリ
８      主メモリ
１０      レジスタ・ファイル
１２      乗算器
１４      シフタ
１６      加算器
１８      命令フェッチ・ユニット
２０      命令パイプライン
２２      デコーダ
２６      構成レジスタ
Ｗ０、Ｗ１、Ｗ２、及びＷ３      キャッシュ・ウェイ
２８      キャッシュ・ライン
３０、３４      ロッキングされた部分
３２、３６      ロッキングされない部分
４８      ビクティム選択回路
【図１】
2008152780.tif 000003
【図２】
2008152780.tif 000004
【図３】
2008152780.tif 000005
【図４】
2008152780.tif 000006
【図５】
2008152780.tif 000007
【外国語明細書】
2008152780.tif 000008
2008152780.tif 000009
2008152780.tif 000010
2008152780.tif 000011
2008152780.tif 000012
2008152780.tif 000013
2008152780.tif 000014
2008152780.tif 000015
2008152780.tif 000016
2008152780.tif 000017
2008152780.tif 000018
2008152780.tif 000019
2008152780.tif 000020
2008152780.tif 000021
2008152780.tif 000022
2008152780.tif 000023
2008152780.tif 000024
2008152780.tif 000025
2008152780.tif 000026
2008152780.tif 000027