(57)【特許請求の範囲】
【請求項１】
プロセッサと、
複数のエントリを有するｎウェイのセット・アソシアティブ・キャッシュであって、各エントリが１以上のデータ値及び対応するアドレス識別子を記憶するように配列される、前記セット・アソシアティブ・キャッシュと、
複数のロックダウン・コントローラであって、各ロックダウン・コントローラが対応するウェイに関連されている前記ロックダウン・コントローラを備え、
各ロックダウン・コントローラは、前記プロセッサにより指定されたアドレス範囲を記憶するアドレス・レジスタを備え、各ウェイ毎に、任意のアドレスのデータ値を新規に記憶しうるモードと、いかなるアドレスのデータ値も新規に記憶しないモードと、データ値を対応するウェイにロックするために使用されるロックダウン・モードであってアドレス識別子が前記アドレス範囲内にあるデータ値のみを対応するウェイにロックするロックダウン・モードと、を含む複数のモードの1つを特定するように構成され、
前記プロセッサは、各ウェイを前記複数のモードの1つとするように動作可能である、データ処理装置。
【請求項２】
各ロックダウン・コントローラは、更に、前記対応するウェイに対して前記ロックダウン・モードが選択されていることを示すモード・インジケータを備えている請求項１記載のデータ処理装置。
【請求項３】
前記モード・インジケータは、エネーブル・ロックダウン・フラグを含み、前記ロックダウン・モードは、エネーブル・ロックダウン・フラグが前記プロセッサによりセットされたときに、選択される請求項２記載のデータ処理装置。
【請求項４】
前記モード・インジケータは、更に、ディセーブル・アンロックド・アロケーション・フラグを含み、前記対応するウェイは、ディセーブル・アンロックド・アロケーション・フラグがセットされたときに、アンロック・データ値を記憶するのが禁止される請求項２記載のデータ処理装置。
【請求項５】
前記アドレス範囲内のアドレス数は、前記対応するウェイにおけるエントリ数に等しい請求項１記載のデータ処理装置。
【請求項６】
前記アドレス範囲内のアドレス数は、前記対応するウェイにおけるエントリ数より少ない請求項１記載のデータ処理装置。
【請求項７】
前記キャッシュは、更に、そのエントリにおける１以上のデータ値をロックしていることを表示するようにセットされる各エントリ用のロックダウン・フィールドを備えている請求項１記載のデータ処理装置。
【請求項８】
各エントリは、キャッシュ・ラインを備え、前記ロックダウン・フィールドは１ビットを備えている請求項７記載のデータ処理装置。
【請求項９】
請求項１に記載のデータ処理装置における前記ロックダウン・コントローラであるロックダウン・コントローラ。
【請求項１０】
ｎウェイのセット・アソシアティブ・キャッシュにデータ値をロックする方法であって、前記キャッシュが複数のエントリを有し、各エントリが１以上のデータ値及び対応するアドレス識別子を記憶するように配列されている方法において、各ウェイは、任意のデータ値を新規に記憶しうるモードと、いかなるアドレスのデータ値も新規に記憶しないモードと、データ値を対応するウェイにロックするために使用されるロックダウン・モードであってアドレス識別子がプロセッサにより指定されたアドレス範囲内にあるデータ値のみを対応するウェイにロックするロックダウン・モードと、を含む複数のモードで動作可能であり、
ａ）前記ロックダウン・モードにより動作するようにウェイを選択するステップと、
ｂ）プロセッサにより指定されたアドレス範囲を、ステップａ）で選択されたウェイに関連したロックダウン・コントローラのアドレス・レジスタに記憶するステップと、
ｃ）キャッシュにデータ値を受け取ったときに、前記対応するアドレス識別子が前記アドレス範囲内にあるとき、ステップ（ａ）で選択したウェイに前記データ値をロックするステップと
を含む方法。
【請求項１１】
前記ロックダウン・モードを選択するステップは、ロックダウン・コントローラ内のロックダウン・フラグをエネーブルするステップを含む請求項１０記載の方法。
【請求項１２】
前記ロックするステップは、データ値を記憶するエントリ用のロックダウン・フィールドをセットすることを含む請求項１０記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置におけるキャッシュの管理に関し、特にこのデータが重ね書きされることを禁止するようにキャッシュ内のデータがロックされたと表示可能にされる形式のキャッシュ管理に関する。
【０００２】
【従来技術の説明】
キャッシュは、メモリからフェッチされたデータ及び／又は複数の命令を記憶するように配列されて、その後これらをプロセッサにより容易にアクセスできるようにされる。以下、用語「データ値（ｄａｔａ  ｖａｌｕｅ）」は、命令及びデータの両方を指すものとして使用する。キャッシュは、プロセッサによって要求された新しい位置（Ｌｏｃａｔｉｏｎ）に対するデータ値によって重ね書きされるまで、データ値を記憶している。このデータ値は、物理又は仮想メモリ位置を使用してキャッシュに記憶される。キャッシュにおけるデータ値が変更されたのであれば、データが変更された時点で又はキャッシュのデータ値が重ね書きされた時点で、変更されたデータ値がメモリに再書き込みされるのを保証するのが一般的である。
【０００３】
キャッシュの内容を編成するために多数の異なる構成が開発されていた。このような構成の一つは、いわゆるハイ・アソシアティブ・キャッシュ（ｈｉｇｈ  ａｓｓｏｃｉａｔｉｖｅ  ｃａｃｈｅ）である。図１Ａに示す６４ウェイ（ｗｅｙ）セット・アソシアティブ・キャッシュ３０のような１６キロバイトのハイ・アソシアティブ・キャッシュ例では、６４ウェイ１１０のそれぞれが多数のキャッシュ・ライン１３０を備えている。６４ウェイ１１０のうちの特定のキャッシュ・ラインに、特定の仮想アドレスに関連させたデータ値を記憶することができる（即ち、キャッシュ３０内にはそのデータ値用に６４の位置選択が存在する）。６４のキャッシュ・ラインのこのような各グループは、セットと呼ばれる。各ウェイ１１０は、２５６バイト（１６キロバイトキャッシュ／６４ウェイ）を記憶する。各キャッシュ・ラインが８個の３２ビット・ワードを記憶するときは、各ウェイに３２バイト・キャッシュ・ライン（８ワードＸ４バイト／ワード）及び８キャッシュ・ラインが存在する（２５６バイト／ウェイ）／（３２バイト／キャッシュ・ライン））。
【０００４】
このような他の構成は、いわゆるロー・アソシアティブ・キャッシュである。図１Ｂに示す４ウェイのセット・アソシアティブ・キャッシュ３０のような１６キロバイトのロー・アソシアティブ・キャッシュの例では、４ウェイ１４０、１４２、１４４、１４６のそれぞれが多数のキャッシュ・ライン１３０を含む。特定の仮想アドレスに関連されたデータ値を４ウェイのうちのいずれかの特定キャッシュ・ラインに記憶することができる（即ち、各セットは４キャッシュ・ラインを有する）。各ウェイは、４キロバイト（１６キロバイト／４ウェイ）を記憶する。各キャッシュ・ラインが８Ｘ３２ビット・ワードを記憶するときは、各ウェイ（４キロバイト／ウェイ）／（３２バイト／キャッシュ・ライン））に、３２バイト／キャッシュ・ライン（８ワードｘ４バイト／ワード）及び１２８キャッシュ・ラインが存在する。
【０００５】
キャッシュに記憶されたデータ値は、プロセッサにより要求された新しい位置に関するデータ値を記憶できるようにするために、重ね書きされるようになっている。次の動作に重ね書きされたデータ値を必要とするときは、これをメイン・メモリから再度フェッチする必要があり、これには多数のクロック・サイクルを取ることになる。従って、キャッシュに記憶したあるデータ値が将来の動作で必要になることが分かっているときは、キャッシュに記憶したデータ値はロックされていると表示し、これらのデータ値が重ね書きされることを禁止することが有用であり、この技術はしばしば「ロックダウン（ｌｏｃｋｄｏｗｎ）」と呼ばれている。データ値をロックダウンすることにより、データ値が要求されたときに、データ値がキャッシュに存在することを保証することが可能である。それは、例えば、リアル・タイム・コード用のアクセス時間の予測可能性を提供する。
【０００６】
図２は、キャッシュ・コントローラ２０を利用する前述した４ウェイ・セット・アソシアティブ・キャッシュ３０’の１つのロックダウン技術を示す。キャッシュ・コントローラ２０は、セット・アソシアティブ・キャッシュ３０’における４つのウェイ１４０、１４２、１４４及び１４６のうちの１つのウェイを選択してフェッチされたデータ値を記憶させる。キャッシュにデータ値を記憶するときは、典型的には、いわゆる「ラインフィル（ｌｉｎｅｆｉｌｌ）」技術を使用して、例えば８ワード（３２バイト）の完全なキャッシュ・ラインをフェッチして記憶する。キャッシュ・コントローラ２０は、ロックド・ウェイ・レジスタ２２及び強制ビット・フラグ２４を備えている。ロックド・ウェイ・レジスタ２２は、ロックド・データを記憶するために使用されるウェイ１４０、１４２、１４４及び１４６の数を判断する。データ値をキャッシュにロックさせるときは、強制ビット・フラグ２４をセットし、これに対してデータ値をキャッシュにロックさせないときは、強制ビット・フラグ２４をリセットする。
【０００７】
データ値をセット・アソシアティブ・キャッシュ３０’に記憶させるときは、キャッシュ・コントローラ２０は、ロックド・ウェイ・レジスタ２２及び強制ビット・フラグ２４のステータスを判断する。強制ビット・フラグ２４がセットされていないときは、キャッシュ・コントローラ２０は、アンロックド・ウェイのうちの１つのウェイを選択し、データ値をアンロックド・ウェイ内の適当な位置に記憶させる。
【０００８】
しかしながら、ロックダウンを必要とするときは、ロックド・ウェイ・レジスタ２２をセットしてロックさせるウェイを選択し、かつ強制ビット・フラグ２４をセットする。ここで、強制ビット・フラグ２４がセットされたので、キャッシュ・コントローラ２０は、ロックド・ウェイ・レジスタ２２の内容に従ってロックド・ウェイを選択し、かつデータ値をロックド・ウェイ内の適当な位置に記憶する。例えば、ロックド・ウェイ・レジスタ２２が値「０」を有するものとすると、ロックド・データ値のラインフィルがウェイ０に発生する。ロックダウンが完了すると、ロックド・ウェイ・レジスタを増加し、この例では値「１」を有し、かつ強制ビット・フラグ２４をリセットする。ここで、ウェイ０に記憶したデータ値がロックされる。それ以上の記憶されるべきデータ値は、ウェイ１〜３に配置される。更なるデータ値をキャッシュにロックさせる必要があるときは、強制ビット・フラグ２４をセットして、ロックド・データ値のラインフィルがウェイ１に発生する。再び、ロックダウンが完了すると、ロックド・ウェイ・レジスタを増加し、これ例では値「２」を有し、かつ強制ビット・フラグ２４をリセットする。ここで、ウェイ０及びウェイ１に記憶したデータ値がロックされる。
【０００９】
前述のように、データ値をアンロックド・ウェイに記憶する必要があるときは、キャッシュ・コントローラ２０は、その後に記憶されるべきフェッチ・データのために残りのアンロックド・ウェイのうちの１ウェイを選択することになる。従って、ロックダウンが達成され、強制ビット・フラグ２４をセットすることなく、ロックド・データ値を重ね書き不可能となる。
【００１０】
以上で説明したロックダウンはロックダウンを可能にしているが、この解決方法には多くの欠点がある。
【００１１】
まず、ロックダウン期間中、シーケンシャルなウェイがロックド・データ値により満たされ、従って、例えば、ウェイ１がロックド・データ値を有すると、ウェイ０はアンロックド・データ値を記憶するように配列することは、ウェイ１もこのように配列されていないため、不可能である。この技術は、非常に柔軟性に欠けることが明らかである。
【００１２】
第２に、ロックダウン技術は、専用のロックダウン・プログラムがロックダウン・ウェイにおけるデータ値の記憶を慎重に管理して、ロックダウン・プログラムの複数部分がデータと共にロックダウン・ウェイにおいてロックできないことを保証することを必要とする。ロックダウン・プログラム又はその複数部分を有し、ロックド・ウェイを占有することは、ロックダウン処理の不正動作に帰結するので、明らかに好ましくない。従って、ロックダウン・プログラムは、いわゆる「キャッシュ不能」メモリの領域に存在するように書き込まれてロックダウン・プログラムがキャッシュにロック状態にならないようにする必要があるか、又はロックダウン・プロセスを実行する前に他のキャッシュにプリロードされる必要がある。更に、専用のプログラムは、メモリから動作するように強制されるときは、その動作が比較的遅い。
【００１３】
従って、改善されたロックダウン技術が提供される必要がある。
【００１４】
【発明の概要】
本発明の第１の特徴によれば、プロセッサと、複数のエントリを有するｎウェイのセット・アソシエイティブ・キャッシュであって、各エントリが１以上のデータ値及び対応するアドレス識別子を記憶するように配列され、前記プロセッサがｎウェイのうちの１ウェイ以上を選択してロックダウン・モードにより動作するように動作可能であって、前記ロックダウン・モードを使用してデータ値を対応するウェイにロックさせる前記セット・アソシアティブ・キャッシュと、複数のロックダウン・コントローラであって、それぞれがが対応するウェイに関連されている前記ロックダウン・コントローラとを備え、各ロックダウン・コントローラは、前記対応するウェイが前記ロックダウン・モードにあるときに、そのアドレス識別子がアドレス範囲に存在するデータ値のみを前記対応するウェイにロックするように前記プロセッサにより指定されたアドレス範囲を記憶するように配列されたアドレス・レジスタを備えている。
【００１５】
本発明の実施例によれば、そのアドレス識別子が前記プロセッサにより指定されたアドレス範囲に含まれるデータ値のみが、前記ロックダウン・モード中に、前記ロックダウン・コントローラにより前記対応するウェイにロックされる。
【００１６】
この技術は、好ましい実施例においてロックダウン中の複雑さを減らし、前記キャッシュにおけるロックされたデータ値のメモリの慎重な管理に、専用のロックダウン・プログラムを必要とせず、代わってデータ値のロックキングが自動的に発生する。好ましい実施例のｎウェイのセット・アソシアティブ・キャッシュ・メモリにおいて、１以上のロックダウン・コントローラが、ロックダウン・モードにおいて使用するアドレス範囲を受け取ることができる。キャッシュすべきデータ値を受け取ったときは、前記キャッシュは、データ値を記憶するために利用可能な複数のウェイのうちの１ウェイを選択する。ロックダウンが必要なときは、前記プロセッサは対応するウェイに関連したロックダウン・コントローラにロックダウン・モードに入るように指令する。その後、そのアドレス識別子が前記ロックダウン・コントローラのアドレス範囲に存在するデータ値が対応するウェイに記憶されてロックダウンにされる。前記アドレス識別子が前記ロックダウン・コントローラのアドレス範囲に含まれないときは、前記データ値を他のウェイのうちの１つのウェイに記憶する。
【００１７】
しかしながら、本発明の一実施例においてロックダウン・プログラムを依然として使用するときは、そのプログラムがキャッシュのロックダウン・ウェイに偶発的にロックされることに、プログラムラマが係わる必要はないので、前記プログラムを書く際にプログラムラマに課せられる制約が軽減される。全てのプログラムラマは、ロックダウン・プログラムの命令及びデータのアドレス識別子がロックダウン・コントローラに指定されたアドレス範囲に含まれないことを保証することが必要である。この簡単な措置により、ロックダウン・プログラムのデータ値がロックド・ウェイを占有せず、かつ前記ロックダウン・プログラムの正しい動作を阻止しないことを保証することができる。特に、ロックダウン・プログラムがいわゆる「キャッシュ不能」メモリの領域に存在するように、又はロックダウン処理を実行する前に他のキャッシュ・ウェイにプリロードされるように、ロックダウン・プログラムを書く必要性はない。
【００１８】
この技術は、更に、ロックダウン・コントローラがロックダウンに関するアドレス範囲を記憶することができるので、柔軟性が増大するが、しかしロックダウンは、前記プロセッサがロックダウン・モードを選択するときに開始されるだけである。従って、ロックダウンは、要求により又は要求されたときに、開始又は終了可能とされる。
【００１９】
各ロックダウン・コントローラは、好ましくは、対応するウェイに対してロックダウン・モードが選択されたときを認識するモード・インジケータを更に備える。
【００２０】
好ましい実施例において、前記モード・インジケータは、各ウェイが好ましくは、多数の異なるモードにより動作することができるので、対応するウェイに対して選択されたモードについての情報を提供する。従って、好ましい実施例において、前記モード・インジケータは、対応するウェイが全てのデータ値を記憶するために利用できるか、任意のデータを記憶するのに利用できないか、又はロックド・データ値を記憶するためにのみ利用できるのかについて判断を実行できることになる。
【００２１】
モード・インジケータは、好ましくは、エネーブル・ロックダウン・フラグ（ｅｎａｂｌｅ  ｌｏｃｋｄｏｗｎ  ｆｌａｇ）を備え、前記プロセッサによりこのエネーブル・ロックダウン・フラグがセットされると、ロックダウン・モードが選択される。
【００２２】
好ましい実施例において、エネーブル・ロックダウン・フラグがセットされたときは、そのアドレス識別子がアドレス範囲に存在するデータ値を対応するウェイにロックする。エネーブル・ロックダウン・フラグがセットされていないときは、ロックダウン・コントローラは通常アンロック・モードにより動作し、対応するウェイに任意のデータ値を記憶することができる。
【００２３】
モード・インジケータは、任意選択として、ディセーブル・アンロック・アロケーション・フラグ（ｄｉｓａｂｌｅ  ｕｎｌｏｃｋｅｄ  ａｌｌｏｃａｔｉｏｎ  ｆｌａｇ）を備えており、ディセーブル・アンロックド・アロケーションフラグがセットされたときは、対応するウェイは、任意のアンロック・データ値を記憶するのが禁止される。
【００２４】
従って、ディセーブル・アンロックド・アロケーション・フラグがセットされていないときは、対応するウェイは、利用可能であり、任意のデータ値を記憶することができる。しかしながら、ディセーブル・アンロックド・アロケーション・フラグがセットされたときは、対応するウェイは、更なるアンロックド・データ値を記憶するのが禁止される。
【００２５】
エネーブル・ロックダウン・フラグ及びディセーブル・アンロックド・アロケーション・フラグを共に備えた実施例では、対応するウェイに下記のモードが発生することができる。即ち、任意のデータ値を記憶する（エネーブル・ロックダウン・フラグはリセット、ディセーブル・アンロックド・アロケーション・フラグはリセット）、データ値を記憶しない（エネーブル・ロックダウン・フラグはリセット、ディセーブル・アンロックド・アロケーション・フラグはセット）、ロックド・データ値のみ記憶する（エネーブル・ロックダウン・フラグはセット、ディセーブル・アンロックド・アロケーション・フラグはセット）。
【００２６】
アドレス範囲内のアドレス数は、好ましくは、対応するウェイにおけるエントリ数に等しい。
従って、選択した全ウェイを使用してロックド・データにより完全に満たすことができる。
代替として、アドレス範囲内のアドレス数は、対応するウェイにおけるエントリ数よりも少ない。
従って、狭いアドレス範囲を選択したウェイの一部にロック可能である。
【００２７】
習熟する者には、以上の技術により、完全なウェイは、ロックされているとして表示される必要があり、従って利用可能なキャッシュのサイズが減少することを理解すべきである。これは、特にハイ・アソシアティブ・キャッシュおいて問題となる恐れはないが、前述したようなロー・アソシアティブ・キャッシュのときは、キャッシュの相当量（例えば、図１Ｂの１／４）が使用不能となる。
【００２８】
そのために、このキャッシュは、好ましくは、各エントリ用のロックダウン・フィールドを更に備えており、これがセットされることにより、そのエントリにおける１以上のデータ値がロックされていること表示する。
【００２９】
従って、各データ値は、ロックされていると個別的に表示可能とされ、またロックダウン・フィールドがセットされているので、このキャッシュは、ロックド・データ値をアンロックド・データ値により重ね書きされない。従って、このような良い実施例では、ディセーブル・アンロックド・アロケーション・フラグをセットさせる必要はなく、各ロックド・データ値が対応するロックダウン・フィールドのセットによりそのようにマークされているので、そのウェイに配置されたいかなるアンロックド・データにより重ね書きされる恐れはない。対応するウェイに所望のデータ値をロックすると、エネーブル・ロックダウン・フラグがクリアされて、アドレス範囲に含まれる更なるデータ値をロックド・データにより重ね書きするのを禁止する。
【００３０】
この解決方法は、ロックド・データ値及びアンロックド・データ値がキャッシュの同一ウェイを共有するのを可能にして、キャッシュの利用を改善するのに役立つ。完全なウェイは、ロックされたと表示される必要はないので、これは、アンロックド・データ値用に利用可能なキャッシュのサイズを増加させる。この解決方法は、キャッシュ全体で各ウェイが大きな割合を占めるロー・アソシアティブ・キャッシュにとって特に利点となる。
【００３１】
好ましくは、各データ値は１つのキャッシュ・ラインを備え、またロックダウン・フィールドは１ビットを備えている。
従って、完全なキャッシュ・ラインは、単に１ビットを使用することによりロックされたと表示されてもよい。
【００３２】
第２の特徴から見ると、本発明の第１の観点によるデータ処理装置用のロックダウン・コントローラを提供するものであり、前記ロックダウン・コントローラは、前記プロセッサにより指定されたアドレス範囲を記憶するように配列されて、対応するウェイがロックダウン・モードにあるときに、そのアドレス識別子がアドレス範囲に存在するデータ値のみを、対応するウェイにロックするようにしたアドレス・レジスタを備えている。
【００３３】
本発明の他の特徴によれば、ｎウェイのセット・アソシアティブ・キャッシュにおけるデータ値をロックする方法が提供され、前記キャッシュは複数のエントリを有し、各エントリが１以上のデータ値及び対応するアドレス識別子を記憶するように配列され、前記方法は、ａ）ロックダウン・モードにより動作するようにウェイを選択するステップと、ｂ）プロセッサにより指定されたアドレス範囲を、ステップ（ａ）で選択されたウェイに関連したロックダウン・コントローラのアドレス・レジスタに記憶するステップと、ｃ）キャッシュにデータ値を受け取ったときに、前記対応するアドレス識別子がアドレス範囲に存在するときは、ステップ（ａ）で選択したウェイに前記データ値をロックするステップとを含む。
【００３４】
添付する図面に示すように、本発明の好ましい複数の実施例を参照して一実施例により、本発明を詳細に説明する。
【００３５】
【好ましい実施例の説明】
本発明の好ましい複数の実施例を説明する前に、セット・アソシアティブ・キャッシュの概要説明を理解するのを助けるために、図３、図４及び図５を参照してこれらの動作及び配列を説明する。
【００３６】
４ウェイのセット・アソシアティブ・キャッシュ３０’に関連するデータ処理装置を図３のブロック図を参照して説明する。図３に示すように、データ処理装置は、メモリ８０から受け取った命令を処理するように配列されたプロセッサ・コア１０を有する。更に、これらの命令を処理するために、メモリ８０からプロセッサ・コア１０が必要とするデータ値を読み出すこともできる。セット・アソシアティブ・キャッシュ３０’は、メモリ８０から受け取ったデータ値（データ及び／又は命令でもよい）を記憶するために設けられており、従ってこれらは、次にプロセッサ・コア１０により容易にアクセス可能にされる。キャッシュ・コントローラ２０’は、セット・アソシアティブ・キャッシュ３０’におけるデータ値のメモリを制御し、かつセット・アソシアティブ・キャッシュ３０’からデータ値を読み出すのを制御する。データ値は適当なサイズが可能であることを理解すべきである。好ましい実施例を説明するために、各データ値は、サイズが１ワード（３２ビット）である。
【００３７】
プロセッサ・コア１０がデータ値の読み出しを必要とする時、プロセッサ・アドレス・バス５４上のデータ値用のアドレス、及び制御バス５２上の制御信号を設定することにより要求を開始する。制御バスは、要求が命令又はデータ、読み出す又は書き込みをワード、ハーフ・ワード又はバイトか否かのような情報を含む。バス５４上のプロセッサ・アドレスは、セット・アソシアティブ・キャッシュ３０’により受け取られ、かつセット・アソシアティブ・キャッシュ３０’におけるアドレスと比較されて要求されたデータ値がセット・アソシアティブ・キャッシュ３０’に記憶されているか否か判断する。データ値がセット・アソシアティブ・キャッシュ３０’に記憶されているときは、セット・アソシアティブ・キャッシュ３０’は、プロセッサ・データ・バス５６にデータ値を出力する。アドレスに対応するデータ値がセット・アソシアティブ・キャッシュ３０’内に存在しないときは、バス・インターフェース・ユニット（ＢＩＵ）４０を使用してメモリ８０からデータ値を読み出す。
【００３８】
ＢＩＵ４０は、制御バス５２上のプロセッサ制御信号を調べてプロセッサ・コア１０が発行した要求が読み出し命令か、又は書き込み命令かを判断する。読み出し要求のときに、キャッシュ・ミス（パス１２０上の信号により示されている。例えば、信号の「ロー」はキャッシュ・ミスを示し、信号の「ハイ」はキャッシュ・ヒットを示す）が存在すれば、ＢＩＵは、メモリ８０からの読み出しを開始し、プロセッサ・アドレス・バス５４からのアドレスを外部アドレス・バス６４に渡す。制御信号は、バス６２上に設定される。メモリ８０は、メモリ読み出しを要求するバス６２上の制御信号について判断し、次いで外部アドレス・バス６４上に表示されているアドレスにあるデータ値をデータ・バス６６上に出力する。次いで、ＢＩＵ４０は、データをデータ・バス６６からプロセッサ・データ・バス５６に渡して、セット・アソシアティブ・キャッシュ３０’に記憶し、かつプロセッサ・コア１０により読み出すことができる。続いて、プロセッサ・コア１０により、セット・アソシアティブ・キャッシュ３０’からデータ値を容易に直接、アクセスすることができる。
【００３９】
セット・アソシアティブ・キャッシュ３０’は、典型的には、多数のキャッシュ・ラインを備え、各キャッシュ・ラインは、複数のデータ値を記憶するように配列されている。好ましい実施例において、メモリ８０からデータ値を読み出してセット・アソシアティブ・キャッシュ３０’に記憶するときは、キャッシュ・ラインの全てを満たすためにメモリから多数のデータ値を読み出す。この技術はしばしば「ラインフィル（充填）」と呼ばれる。好ましい実施例において、このようなラインフィルは、プロセッサ・コア１０がセット・アソシアティブ・キャッシュ３０’に現在記憶されていないキャッシュ可能なデータ値を要求することに起因する。これは、先に説明したメモリ読み出し処理を発生させる。読み出しミスによりラインフィルを実行することに加えて、採用した割り当て方針に従って、書き込みミスにより更にラインフィルを実行することも可能なことを理解すべきである。
【００４０】
ラインフィルは、外部バス６０を介してメモリ８０をアクセスすることを必要とするので、この処理は、比較的に低速であり、メモリ速度及び外部バスにより支配される。
【００４１】
図４は、プロセッサ・アドレス・バス５４に出力するアドレス３００の内容を示す。アドレス３００は、それぞれＴＡＧ部３１０、ＳＥＴ部３１２、ＷＯＲＤ部３１４及びＢＹＴＥ部３１６からなる。アドレス３００のＳＥＴ部３１２は、セット・アソシアティブ・キャッシュ３０’内の特定セットを認識するために使用される。ＷＯＲＤ部３１４は、プロセッサ・コア１０によるアクセスの対象であるキャッシュ・ライン内に特定のワードを認識し、一方、ＢＹＴＥ部３１６は、必要ならば、ワード内の特定のバイトを指定可能にする。
【００４２】
図５は、プロセッサ・コア１０がデータ値を要求するときのセット・アソシアティブ・キャッシュ３０’内の動作を更に詳細に示す。セット・アソシアティブ・キャッシュ３０’は、４つのウェイ、各ウェイに関連したコンパレータ２１１、ウェイ・セレクタ２１３、及びマルチプレクサ２１９を備えている。
【００４３】
各ウェイは、ＴＡＧメモリ２１５及びデータ・メモリ２１７を備えている。各ウェイのデータ・メモリ２１７は、データ値を記憶するように配列された複数のキャッシュ・ラインを含む。各キャッシュ・ラインには、ＴＡＧを記憶するデータ・メモリ２１５におけるエントリが関連される。
【００４４】
読み出しを要求するときは、そのデータ値に対するアドレス３００をプロセッサ・アドレス・バス５４上に設定する。このアドレス３００は、プロセッサ・アドレス・バス５４を介してセット・アソシアティブ・キャッシュ３０’により受け取られる。各ウェイにおけるＴＡＧメモリ２１５及びデータ・メモリ２１７は、アドレス３００を受け取る。ＴＡＧメモリ２１５は、アドレス３００のＳＥＴ部３１２により指定された位置に記憶されたＴＡＧ値を関連するコンパレータ２１１に出力する。データ・メモリ２１７は、アドレス３００のＳＥＴ部３１２、ＷＯＲＤ部３１４及びＢＹＴＥ部３１６により指定された位置に記憶されたデータ値をマルチプレクサ２１９に出力する。そこで、各コンパレータ２１１は、ウェイから出力されたＴＡＧ値をプロセッサ・アドレス・バス５４上に配置されたアドレス３００のＴＡＧ部３１０と比較する。
【００４５】
ＴＡＧ値及びＴＡＧ部３１０が一致するときは、ウェイ・セレクタ２１３に信号を送出する。ウェイ・セレクタ２１３は、パス１２０上でキャッシュ・ヒットを示し、かつ選択信号をマルチプレクサ２１９に出力する。次いで、マルチプレクサ２１９は、対応するデータ値を選択して、プロセッサ・データ・バス５６に出力する。このようにプロセッサ・コア１０はキャッシュ３０’から直接データが供給される。
【００４６】
ＴＡＧ値及びＴＡＧ部３１０が一致しないときは、ウェイ・セレクタ２１３に信号を送出しない。次いで、ウェイ・セレクタ２１３は、パス１２０上に適当な信号を供給することにより、キャッシュ・ミスを表示する。またメモリ８０からデータ値を読み出してセット・アソシアティブ・キャッシュ３０’に記憶する。従って、プロセッサ・コア１０は、メモリ８０から読み出す間の遅延後に、データ値が供給され、データ値及びＴＡＧ値は、セット・アソシアティブ・キャッシュ３０’に記憶される。これは、前にセット・アソシアティブ・キャッシュ３０’に記憶したデータ値及びＴＡＧ値に重ね書きをする。
【００４７】
しかしながら、重ね書きされたデータ値が次の動作のためにプロセッサ・コア１０により要求されたときは、データ値に対するアクセス時間は、メモリ８０からデータ値をフェッチする必要があるので、予測できないことになる。これは、特にリアル・タイム・システムにおいて欠点となる。従って、データ値に対するアクセス時間を保証する必要があるときは、セット・アソシアティブ・キャッシュ３０’におけるこれらのデータ値をロックダウンすることが有用である。ロックダウンは、好ましくは、ブートアップ・ルーチン中に開始されてもよく、割り込み又は臨界的なランタイム・ルーチンのようなルーチンに関するデータ値は、セット・アソシアティブ・キャッシュ３０’にロックされている。そこで、これらのルーチンは、速度利益が得られるセット・アソシアティブ・キャッシュ３０’からプロセッサ・コア１０に適用可能となる。ロックダウンは、更に処理中の他の適当な時点で発生する恐れがある。
【００４８】
図６は、本発明の好ましい実施例による４ウェイのセット・アソシアティブ・キャッシュ３０’用のキャッシュ・コントローラ２０’を示す。キャッシュ・コントローラ２０’は、４つのロックダウン・コントローラ２４０、２５０、２６０、２７０を備えており、それぞれがセット・アソシアティブ・キャッシュ３０’の複数ウェイのうちの対応する１ウェイに関連される。ロックダウン・コントローラ２４０、２５０、２６０、２７０の機能は、ソフトウェア又はハードウェア、又は両者の組み合わせにより実施可能とされる。
【００４９】
概要的に、各ロックダウン・コントローラ２４０、２５０、２６０、２７０は、ロックダウン・モードにおいて、指定されたアドレス・レジスタ内のデータ値をセット・アソシアティブ・キャッシュ３０’の対応するウェイにロックするように配列される。
【００５０】
各ロックダウン・コントローラ２４０、２５０、２６０、２７０は、ロックダウン・レジスタ２１０、エネーブル・ロックダウン・フラグ２２０及びディセーブル・アンロックド・アロケーション・フラグ２３０を備えている。各ロックダウン・コントローラ２４０、２５０、２６０、２７０は、制御バス５２上にプロセッサ・コア１０から制御信号を受け取り、ウェイ選択信号をセット・アソシアティブ・キャッシュ３０’の対応するウェイに出力する。
【００５１】
ディセーブル・アンロックド・アロケーション・フラグ２３０は、プロセッサ・コア１０によりセット又はクリアされる。ディセーブル・アンロックド・アロケーション・フラグ２３０がクリアされると、対応するウェイにどのようなデータ値も記憶することができる。ディセーブル・アンロックド・アロケーション・フラグ２３０がセットされると、ロックド・データのみを対応するウェイに記憶することができる。ディセーブル・アンロックド・アロケーション・フラグ２３０は、好ましくは、開始の際にクリアするように配列された１ビット（論理「１」はセットを表し、論理「０」はクリアを表す）を備えている。
【００５２】
ロックダウン・アドレス・レジスタ２１０は、プロセッサ・コア１０によりセットされる。ロックダウン・アドレス・レジスタ２１０は、プロセッサ・コア１０により指定されたアドレス・レジスタを認識するように配列され、従って例えば、上位アドレス及び下位アドレスを明示的に記憶することができる。しかしながら、ロックダウン・アドレス・レジスタ２１０は、好ましくは、アドレス３００の特定のＴＡＧ部に対応するアドレスを記憶する。ＴＡＧ部は、アドレス３００の最上位ビットであり、従ってアドレス・レジスタを無条件に指定する。
【００５３】
アドレス・エネーブル・ロックダウン・フラグ２２０は、プロセッサ・コア１０によりセット又はクリアされる。アドレス・エネーブル・ロックダウン・フラグ２２０がセットされると、ロックダウン・コントローラは、アンロック・モードにより動作する。アドレス・エネーブル・ロックダウン・フラグ２２０がクリアされると、ロックダウン・コントローラは、アンロック・モードにより動作する。
【００５４】
ここで、キャッシュ・コントローラ２０’の動作を更に詳細に説明する。開始により、ロックダウン・アドレス・レジスタ２１０、エネーブル・ロックダウン・フラグ２２０及びディセーブル・アンロックド・アロケーション・フラグ２３０は、全てクリアされる。従って公知の方法により、任意のデータ値がセット・アソシアティブ・キャッシュ３０’の任意のウェイに記憶可能であり、必要により公知の方法により、セット・アソシアティブ・キャッシュ３０’に既に存在するデータ値に重ね書きされる。
【００５５】
ロックダウンが必要とされるときは、ロックダウン・コントローラを２モードのうちの１モード、即ち「プリロード及びロック」、又は「バックグラウンド・ロック」により動作させることができる。
【００５６】
プリロード及びロックでは、プロセッサ・コア１０がアドレス範囲によりロックダウン・コントローラのうちの１つのロックダウン・アドレス・レジスタ２１０を選択してセットする。その後、ディセーブル・アンロックド・アロケーション・フラグ２３０及びエネーブル・ロックダウン・フラグ２２０は、同一のロックダウン・コントローラにセットされ、一方、他のロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ２３０及びエネーブル・ロックダウン・フラグ２２０は、クリアされたままである（勿論、データ値が他のキャッシュ・ウェイに既にロックされている限りてあって、その場合に、ディセーブル・アンロックド・アロケーション・フラグが他の当該キャッシュ・ウェイにセットされる）。
【００５７】
ロックダウン・プログラムは、次にプロセッサ・コア１０により実行され、データ値をロードしてセット・アソシアティブ・キャッシュ３０’にロックされる。要求されたデータ値がセット・アソシアティブ・キャッシュ３０’に現在、記憶されていないと仮定すると、セット・アソシアティブ・キャッシュ３０’は、パス１２０上にキャッシュ・ミスを出力し、かつＢＩＵ４０は、前述したように、メモリ８０からデータ値をフェッチする。データ値のアドレスがロックダウン・アドレス・レジスタ２１０のアドレス範囲に含まれ、プロセッサ・データ・バス５６からデータ値が得られるときは、キャッシュ・ウェイを選択し、データ値をロックド・ウェイに記憶する。しかしながら、データ値のアドレスがロックダウン・アドレス・レジスタ２１０のアドレス範囲に含まれないときは、ディセーブル・アンロックド・アロケーション・フラグ２３０がクリアされている複数のウェイのうちの１つのウェイを選択し、データ値をアンロックド・ウェイに記憶する。従って、アドレス範囲のアドレスを有するデータ値のみをロックド・ウェイにロックし、これに対し、他のアドレスを有するキャッシュ可能なデータ値を複数のアンロックド・ウェイのうちの１つのウェイにロックする。これは、ロックダウン・プログラムが書き込まれているウェイに対する制約を軽減し、ロックダウン・プログラムのデータ値そのものがアドレス範囲内に存在しない限り、これらが誤ってロックド・ウェイにロックされることはない。
【００５８】
所望のデータ値がキャッシュ・ウェイにロックされたときは、好ましくは、エネーブル・ロックダウン・フラグ２２０がクリアされて、そのアドレス範囲内のアドレスを有する更なるデータ値をロックド・ウェイにロックされたデータ値に重ね書きするのを禁止する。更に、ロックド・データがロックド・ウェイに残っている間に、ディセーブル・アンロックド・アロケーション・フラグ２３０は、セットされたままであり、どのようなアンロックド・データもロックド・データに重ね書きするのを禁止する。
【００５９】
従って、本発明の好ましい実施例によるプリロード及びロック・モードにおいて、アドレス範囲がロックダウン・プログラムのアドレスを含むことがないように、アドレス範囲が選択されている限り、所望のデータ値のみがセット・アソシアティブ・キャッシュ３０’のロックド・ウェイにロックされる。都合よいことに、これは、ロックダウン・プログラムのデータ値がロックド・ウェイを占有しないこと、及びロックダウン・プログラムの正しい動作を妨げないことを保証する。従って、ロックダウン・プログラムは、通常、キャッシュ不能なメモリにおいて動作して、セット・アソシアティブ・キャッシュ３０’にロックされないように、特別に書き込まれる必要はない。また、ロックダウン・プログラムはセット・アソシアティブ・キャッシュ３０’にロックされることはないので、ロックダウン・プログラムがセット・アソシアティブ・キャッシュ３０’から動作させることが可能であり、速度の利点を獲得できる。
【００６０】
バックグラウンド・ロック・モードにおいて、プロセッサ・コア１０は、アドレス範囲によりロックダウン・コントローラのうちの１つのロックダウン・アドレス・レジスタ２１０を選択し、かつセットする。その後、ディセーブル・アンロックド・アロケーション・フラグ２３０及びエネーブル・ロックダウン・フラグ２２０は、同一のロックダウン・コントローラにセットされ、これに対して、他のロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ２３０及びエネーブル・ロックダウン・フラグ２２０は、クリアされたままである。
【００６１】
次いで、プロセッサ・コア１０によりアプリケーション・コードを実行する。プロセッサ・コア１０により要求されたデータ値がセット・アソシアティブ・キャッシュ３０’に現在記憶されていないときは、前述したように、セット・アソシアティブ・キャッシュ３０’は、パス１２０にキャッシュ・ミスを出力し、またＢＩＵ４０は、メモリ８０からそのデータ値をフェッチする。データ値のアドレスがロックダウン・アドレス・レジスタ２１０のアドレス範囲に含まれているときは、プロセッサ・データ・バス５６上のデータ値が利用可能になると、キャッシュ・ウェイを選択し、ロックド・ウェイにデータ値を記憶する。しかしながら、データ値のアドレスがロックダウン・アドレス・レジスタ２１０のアドレス範囲内に含まれないときは、クリアされたディセーブル・アンロックド・アロケーション・フラグ２３０により、複数のウェイのうちの１ウェイを選択し、かつデータ値をアンロックド・ウェイに記憶する。従って、アドレス範囲内のアドレスを有するデータ値のみをロックド・ウェイにロックし、これに対し、他のアドレスを有するデータ値をアンロックド・ウェイのうちの１つにロックする。
【００６２】
好ましくは、ロックド・データがロックド・ウェイにとどまる間に、ディセーブル・アンロックド・アロケーション・フラグ２３０はセットされたままである。
【００６３】
従って、本発明の好ましい実施例によるバックグラウンド・ロック・モードは、特定のアドレス範囲内のデータ値のみをセット・アソシアティブ・キャッシュ３０’のロックド・ウェイにロックするので、データ値のメモリを慎重に管理するために専用のロックダウン・プログラムを必要としない。その代わり、アプリケーション・コードの通常の動作中にデータ値をロックド・ウェイに自動的に記憶することができ、それは、キャッシュ可能なデータ値をロックするか、そのアドレスによらないかのいずれかである。
【００６４】
いずれのモードにおいても、ロックド・データ値をもはや必要としなくなれば、ディセーブル・アンロックド・アロケーション・フラグ２３０がクリアされる。その後、アンロックド・データ値は、ロックド・データ値に重ね書き可能である。更に、新しいアドレス範囲をロックダウン・アドレス・レジスタ２１０にロードしたときは、ロックダウン・モード中に新しいロックド・データを前記以上必要でないロックド・データに重ね書きできる。更に、ディセーブル・アンロックド・アロケーション・フラグ２３０は、特定の処理用のウェイを効果的に「予約」するためにセットされてもよい。この技術は、例えば、利用可能なキャッシュ・サイズを一時的に減少させることが望ましい状況での多重処理環境に有用である。利用可能なキャッシュ・サイズを減少させると、典型的には、多分１回のみデータ値をアクセスすることになるので、アプリケーション・プログラムのうちの１つがキャッシュの使用において特に非効率なことが解っている状況において効果的となり得るのに対し、他のアプリケーションは、データ値を多数回、アクセスすることにより、キャッシュの使用が特に効率的となり得る。従って、この技術を使用して、効率的でないアプリケーション・プログラムがキャッシュの小さな部分のみを利用するだけでよいことを保証することができる。
【００６５】
４つのロックダウン・コントローラを説明したが、各ウェイに専用のロックダウン・コントローラを設ける必要性をなくすことができるので、わずかなロックダウン・コントローラを設けることでもよいことを理解すべきである。その代わりに、特定のウェイをロックダウン・コントローラと関連させるようにセレクタを設けてもよい。しかしながら、その場合は、各ウェイにディセーブル・アンロックド・アロケーション・フラグ２３０を備えてロックド・データ値をそれぞれのウェイに記憶しているのか否かを表すことが必要となる。更に、ロックされていると決して表示されることのない少なくとも１つのウェイを有することが望ましく、かつこの実施例では、丁度３つのロックダウン・コントローラが必要となるであろう。
【００６６】
関心のある読者のために、ロックダウン・コントローラを従来技術の解決方法と同様の方法により動作可能にし、これによって従来技術の解決方法と逆で両立を可能にする「強制モード」をここで説明する。
【００６７】
強制モードでは、プロセッサ・コア１０がロックダウン・プログラムが既にセット・アソシアティブ・キャッシュ３０’のロックされている領域にロードされている、又はメモリ８０のキャッシュ不能領域にある。その後、ディセーブル・アンロックド・アロケーション・フラグ２３０が１ロックダウン・コントローラを除き、全てセットされ、かつ全ロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ２３０がクリアされたままである。従って、唯一のウェイが全てのデータ値を受け取る（その対応するロックダウン・コントローラは、そのディセーブル・アンロックド・アロケーション・フラグをクリアさせている）。
【００６８】
そこで、ロックダウン・プログラムを実行させて、複数のデータ値を１つのウェイにロードさせ、これが任意のデータ値を受け取ることになる。
【００６９】
全てのデータ値がロードされると、既にセットされた全てのロックダウン・コントローラにおけるディセーブル・アンロックド・アロケーション・フラグ２３０をクリアする。逆に、データ値をロードしたウェイに対応するロックダウン・コントローラに対して、ディセーブル・アンロックド・アロケーション・フラグをセットして更なるアンロックド割り当てを禁止する。従って、データ値をロードした１ウェイを除き、全てのウェイは、全てのデータ値を受け取る。データ値をロードした１ウェイは、ロックド・データ値を単に受け取るだけである。しかしながら、ディセーブル・アンロックド・アロケーション・フラグ２３０はセットされていず、ロックダウン・コントローラは、ロックダウン・モードでないので、ロデータ値をロックダウンすることはしない。従って、データ値は、セット・アソシアティブ・キャッシュ３０’の当該ウェイにおいて効果的にロックされる。
【００７０】
ここで、ライン毎を基本としてデータ値をロックする技術をエネーブルする更なる実施例を説明する。
好ましい実施例の説明をする前に、理解を助けるため、キャッシュの詳細な構成の概要説明を行う。
【００７１】
図７は、キャッシュ３０”のウェイ０の詳細な図を示す。前述したように、ＴＡＧメモリ２１５’における各エントリ３３０は、データ・メモリ２１７’において対応するキャッシュ・ライン３７０を有し、各キャッシュ・ラインは、複数のデータ値を有する。アドレス３００のＴＡＧ部３１０がＴＡＧメモリ２１５’の複数のＴＡＧエントリ３３０のうちの１エントリにおけるＴＡＧと一致するときは、キャッシュ・ラインが有効であると仮定して（以下、各ラインのマーキングを有効として説明する）、アドレス３００のＷＯＲＤ部３１４により認識された対応するキャッシュ・ライン３７０のデータ値は、キャッシュから出力される。
【００７２】
各キャッシュ・ライン３７０用のＴＡＧエントリ３３０に記憶したＴＡＧに加えて、各ラインに対して多数のステータス・ビットが設けられる。ステータス・ビットは、好ましくは、ＴＡＧメモリ２１５’内に設けられる。従って、各ラインに関連して、有効ビット３４０及びダーティ（ｄｉｒｔｙ）ビット３５０が存在する。当該技術分野に習熟する者に理解されるように、有効ビット３４０を使用して対応するキャッシュ・ラインに記憶したデータ値が依然として有効か否かが調べられて表示をする。従って、有効ビット３４０をセットすると、対応するデータ値が有効であることを表示することになり、これに対し、有効ビット３４０をリセットすると、データ値のうちの少なくとも１データ値がこれ以上有効でないことを表示する。
【００７３】
更に、当該技術分野に習熟する者に理解されるように、ダーティ・ビット３５０は、対応するキャッシュ・ラインに記憶されたどのようなデータ値もメモリ８０に記憶したデータ値より最新であるか否かを表示するために使用される。ダーティ・ビット３５０は、メモリ８０の書き戻し領域に関連するものであって、プロセッサ・コア１０から出力され、かつキャッシュ３０”に記憶されたデータ値は、メモリ８０に速やかに渡して記憶されるのではなく、むしろ特定のキャッシュ・ラインをキャッシュ３０”から重ね書きするか、又は「クリアする」時点で、このデータ値をメモリ８０に渡すべきか否かについての判断を行う。従って、セットされていないダーティ・ビット３５０は、対応するキャッシュ・ラインに記憶されたデータ値がメモリ８０に記憶されたデータ値に対応することを表示することになり、これに対し、セットされているダーティ・ビット３５０は、対応するキャッシュ・ラインに記憶されたデータ値のうちの少なくとも１データ値が更新されたことを表示することになり、更新されたデータ値は、メモリ８０にまだ渡されていない。
【００７４】
典型的な従来技術のキャッシュにおいて、キャッシュ・ラインにおけるデータ値がキャッシュに重ね書きされる場合に、ダーティ・ビット３５０及び有効ビット３４０がデータ値が共に有効であり、かつダーティであることを表示しているときは、これらのデータ値は、記憶のためにメモリ８０に出力されることになる。データ値が有効でない、又はダーティでないときは、データ値をメモリ８０に戻す必要性はなく、データ値を重ね書きすることができる。
【００７５】
好ましい実施例において、各キャッシュ・ラインに対応する更なるビットが設けられ、これを以下でロックダウン・ビット３６０と呼ぶ。ロックダウン・ビット３６０は、キャッシュ・ライン毎を基本としてロックダウン・データ値に対して使用される。
【００７６】
開始において、各ロックダウン・ビット３６０がクリアされる（論理「０」はクリアされていることを表し、論理「１」はセットされていることを表す）。データ値がキャッシュ３０”にロックされたときは、関連されたロックダウン・ビット３６０がセットされる。ロックダウン・ビット３６０がセットされると、ロックされるように表されたデータ値のみが既存のロックド・データ値に重ね書き可能である。ロックダウン・ビット３６０がクリアされると、任意のデータ値が既存のデータ値に重ね書きすることができる。
【００７７】
以上で説明したプリロード及びロックモード、及びバックグラウンド・ロックモードを考えると、ロックダウン・ビットを使用するときは、ロックダウン・ビット３６０がアンロックド・データ値をロックド・データ値に重ね書きするのを禁止するので、ディセーブル・アンロックド・アロケーション・フラグ２３０は、どのウェイにおいてもセットされる必要性は全くない。
【００７８】
プロセッサ・コア１０は、アドレス範囲によりロックダウン・コントローラのうちの一つのロックダウン・アドレス・レジスタ２１０を選択し、かつセットする。その後、ディセーブル・アンロックド・アロケーション・フラグ２３０は、同一のロックダウン・コントローラにセットされ、これに対し、他のロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ２３０は、クリアされたままである。データ値のアドレスがロックダウン・アドレス・レジスタ２１０のアドレス範囲に含まれるときは、キャッシュ・ウェイが選択され、データがそのロックド・ウェイに記憶され、ロック・ビットがセットされる。しかしながら、データ値のアドレスがロックダウン・アドレス・レジスタ２１０のアドレス範囲に含まれないときは、他のウェイのうちの１ウェイを選択し、かつデータ値をそのアンロックド・ウェイに記憶することができる。代替として、データ値のアドレスがロックダウン・アドレス・レジスタ２１０のアドレス範囲内に含まれないときは、ロックド・ウェイは依然として選択されるが、しかしデータ値は、キャッシュ・ラインに記憶され、そこでのロック・ビットはセットされていず、またロック・ビットはクリアされたままである。
【００７９】
従って、アドレス範囲内のアドレスを有するデータ値のみがロックド・ウェイにロックされ、かつロック・ビットがセットされ、これに対し、他のアドレスを有するデータ値はキャッシュ３０”内のアンロックド位置に記憶され、また対応するロック・ビットは、クリアされたままである。
【００８０】
ロックダウン・ビット３６０は、アンロックド・データ値をロックド・データ値に重ね書きするのを禁止する。しかしながら、これらのロックド・データ値は、既存のロックド・データ値に重ね書きする恐れがある。ロックド・データ値がもはや要求されなくなると、ロックダウン・ビット３６０は、ロックド・データ値を新しいデータ値により重ね書きできるように、クリアされる必要がなくなる。
【００８１】
従って、ロックド・データ値及びアンロックド・データ値は、キャッシュ利用の改善に役立つキャッシュの同一ウェイを共有可能にする。従って、完全なウェイは、ロックされていると表示される必要はなく、従って、アンロックド・データ値用に利用可能なキャッシュのサイズを増加させる。この解決方法は、各ウェイがキャッシュ全体のかなりの比率となるロー・アソシアティブ・キャッシュに対して特に効果的である。
【００８２】
ここでは特定の実施例を説明したが、本発明はこれらに限定されず、本発明の範囲内で多くの変形及びこれに対する付加が可能であることを理解すべきである。例えば、本発明の範囲から逸脱することなく、独立請求項の特徴により下記の従属請求項の特徴の種々の組み合わせが実施できる。
【図面の簡単な説明】
【図１】Ａは、ハイ・アソシアティブ・キャッシュの概要図である。Ｂは、ロー・アソシアティブ・キャッシュの概要図である。
【図２】ロックダウンに対する従来技術の解決方法を示すブロック図である。
【図３】本発明を利用できるデータ処理装置を示すブロック図である。
【図４】アドレスの構成要素を示す図である。
【図５】ロー・アソシアティブ・キャッシュのアクセスを説明するブロック図である。
【図６】好ましい一実施例によるロックダウン・コントローラの動作を示すブロック図である。
【図７】好ましい一実施例によるロー・アソシアティブ・キャッシュの配列を示す図である。
【符号の説明】
１０  プロセッサ・コア
１  キャッシュ・コントローラ
３０’  セット・アソシアティブ・キャッシュ
４０  バス・インターフェース・ユニット（ＢＩＵ）
５２  制御バス
５４  プロセッサ・アドレス・バス
５６  プロセッサ・データ・バス
６２  バス
８０  メモリ
【図１】
0003917839.tif 000002
【図２】
0003917839.tif 000003
【図３】
0003917839.tif 000004
【図４】
0003917839.tif 000005
【図５】
0003917839.tif 000006
【図６】
0003917839.tif 000007
【図７】
0003917839.tif 000008