JP3917839B2 - データ処理装置及びデータ処理装置におけるロックダウン・コントローラ及びデータ値をロックする方法 - Google Patents
データ処理装置及びデータ処理装置におけるロックダウン・コントローラ及びデータ値をロックする方法 Download PDFInfo
- Publication number
- JP3917839B2 JP3917839B2 JP2001317951A JP2001317951A JP3917839B2 JP 3917839 B2 JP3917839 B2 JP 3917839B2 JP 2001317951 A JP2001317951 A JP 2001317951A JP 2001317951 A JP2001317951 A JP 2001317951A JP 3917839 B2 JP3917839 B2 JP 3917839B2
- Authority
- JP
- Japan
- Prior art keywords
- lockdown
- way
- cache
- data value
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、データ処理装置におけるキャッシュの管理に関し、特にこのデータが重ね書きされることを禁止するようにキャッシュ内のデータがロックされたと表示可能にされる形式のキャッシュ管理に関する。
【0002】
【従来技術の説明】
キャッシュは、メモリからフェッチされたデータ及び/又は複数の命令を記憶するように配列されて、その後これらをプロセッサにより容易にアクセスできるようにされる。以下、用語「データ値(data value)」は、命令及びデータの両方を指すものとして使用する。キャッシュは、プロセッサによって要求された新しい位置(Location)に対するデータ値によって重ね書きされるまで、データ値を記憶している。このデータ値は、物理又は仮想メモリ位置を使用してキャッシュに記憶される。キャッシュにおけるデータ値が変更されたのであれば、データが変更された時点で又はキャッシュのデータ値が重ね書きされた時点で、変更されたデータ値がメモリに再書き込みされるのを保証するのが一般的である。
【0003】
キャッシュの内容を編成するために多数の異なる構成が開発されていた。このような構成の一つは、いわゆるハイ・アソシアティブ・キャッシュ(high associative cache)である。図1Aに示す64ウェイ(wey)セット・アソシアティブ・キャッシュ30のような16キロバイトのハイ・アソシアティブ・キャッシュ例では、64ウェイ110のそれぞれが多数のキャッシュ・ライン130を備えている。64ウェイ110のうちの特定のキャッシュ・ラインに、特定の仮想アドレスに関連させたデータ値を記憶することができる(即ち、キャッシュ30内にはそのデータ値用に64の位置選択が存在する)。64のキャッシュ・ラインのこのような各グループは、セットと呼ばれる。各ウェイ110は、256バイト(16キロバイトキャッシュ/64ウェイ)を記憶する。各キャッシュ・ラインが8個の32ビット・ワードを記憶するときは、各ウェイに32バイト・キャッシュ・ライン(8ワードX4バイト/ワード)及び8キャッシュ・ラインが存在する(256バイト/ウェイ)/(32バイト/キャッシュ・ライン))。
【0004】
このような他の構成は、いわゆるロー・アソシアティブ・キャッシュである。図1Bに示す4ウェイのセット・アソシアティブ・キャッシュ30のような16キロバイトのロー・アソシアティブ・キャッシュの例では、4ウェイ140、142、144、146のそれぞれが多数のキャッシュ・ライン130を含む。特定の仮想アドレスに関連されたデータ値を4ウェイのうちのいずれかの特定キャッシュ・ラインに記憶することができる(即ち、各セットは4キャッシュ・ラインを有する)。各ウェイは、4キロバイト(16キロバイト/4ウェイ)を記憶する。各キャッシュ・ラインが8X32ビット・ワードを記憶するときは、各ウェイ(4キロバイト/ウェイ)/(32バイト/キャッシュ・ライン))に、32バイト/キャッシュ・ライン(8ワードx4バイト/ワード)及び128キャッシュ・ラインが存在する。
【0005】
キャッシュに記憶されたデータ値は、プロセッサにより要求された新しい位置に関するデータ値を記憶できるようにするために、重ね書きされるようになっている。次の動作に重ね書きされたデータ値を必要とするときは、これをメイン・メモリから再度フェッチする必要があり、これには多数のクロック・サイクルを取ることになる。従って、キャッシュに記憶したあるデータ値が将来の動作で必要になることが分かっているときは、キャッシュに記憶したデータ値はロックされていると表示し、これらのデータ値が重ね書きされることを禁止することが有用であり、この技術はしばしば「ロックダウン(lockdown)」と呼ばれている。データ値をロックダウンすることにより、データ値が要求されたときに、データ値がキャッシュに存在することを保証することが可能である。それは、例えば、リアル・タイム・コード用のアクセス時間の予測可能性を提供する。
【0006】
図2は、キャッシュ・コントローラ20を利用する前述した4ウェイ・セット・アソシアティブ・キャッシュ30’の1つのロックダウン技術を示す。キャッシュ・コントローラ20は、セット・アソシアティブ・キャッシュ30’における4つのウェイ140、142、144及び146のうちの1つのウェイを選択してフェッチされたデータ値を記憶させる。キャッシュにデータ値を記憶するときは、典型的には、いわゆる「ラインフィル(linefill)」技術を使用して、例えば8ワード(32バイト)の完全なキャッシュ・ラインをフェッチして記憶する。キャッシュ・コントローラ20は、ロックド・ウェイ・レジスタ22及び強制ビット・フラグ24を備えている。ロックド・ウェイ・レジスタ22は、ロックド・データを記憶するために使用されるウェイ140、142、144及び146の数を判断する。データ値をキャッシュにロックさせるときは、強制ビット・フラグ24をセットし、これに対してデータ値をキャッシュにロックさせないときは、強制ビット・フラグ24をリセットする。
【0007】
データ値をセット・アソシアティブ・キャッシュ30’に記憶させるときは、キャッシュ・コントローラ20は、ロックド・ウェイ・レジスタ22及び強制ビット・フラグ24のステータスを判断する。強制ビット・フラグ24がセットされていないときは、キャッシュ・コントローラ20は、アンロックド・ウェイのうちの1つのウェイを選択し、データ値をアンロックド・ウェイ内の適当な位置に記憶させる。
【0008】
しかしながら、ロックダウンを必要とするときは、ロックド・ウェイ・レジスタ22をセットしてロックさせるウェイを選択し、かつ強制ビット・フラグ24をセットする。ここで、強制ビット・フラグ24がセットされたので、キャッシュ・コントローラ20は、ロックド・ウェイ・レジスタ22の内容に従ってロックド・ウェイを選択し、かつデータ値をロックド・ウェイ内の適当な位置に記憶する。例えば、ロックド・ウェイ・レジスタ22が値「0」を有するものとすると、ロックド・データ値のラインフィルがウェイ0に発生する。ロックダウンが完了すると、ロックド・ウェイ・レジスタを増加し、この例では値「1」を有し、かつ強制ビット・フラグ24をリセットする。ここで、ウェイ0に記憶したデータ値がロックされる。それ以上の記憶されるべきデータ値は、ウェイ1〜3に配置される。更なるデータ値をキャッシュにロックさせる必要があるときは、強制ビット・フラグ24をセットして、ロックド・データ値のラインフィルがウェイ1に発生する。再び、ロックダウンが完了すると、ロックド・ウェイ・レジスタを増加し、これ例では値「2」を有し、かつ強制ビット・フラグ24をリセットする。ここで、ウェイ0及びウェイ1に記憶したデータ値がロックされる。
【0009】
前述のように、データ値をアンロックド・ウェイに記憶する必要があるときは、キャッシュ・コントローラ20は、その後に記憶されるべきフェッチ・データのために残りのアンロックド・ウェイのうちの1ウェイを選択することになる。従って、ロックダウンが達成され、強制ビット・フラグ24をセットすることなく、ロックド・データ値を重ね書き不可能となる。
【0010】
以上で説明したロックダウンはロックダウンを可能にしているが、この解決方法には多くの欠点がある。
【0011】
まず、ロックダウン期間中、シーケンシャルなウェイがロックド・データ値により満たされ、従って、例えば、ウェイ1がロックド・データ値を有すると、ウェイ0はアンロックド・データ値を記憶するように配列することは、ウェイ1もこのように配列されていないため、不可能である。この技術は、非常に柔軟性に欠けることが明らかである。
【0012】
第2に、ロックダウン技術は、専用のロックダウン・プログラムがロックダウン・ウェイにおけるデータ値の記憶を慎重に管理して、ロックダウン・プログラムの複数部分がデータと共にロックダウン・ウェイにおいてロックできないことを保証することを必要とする。ロックダウン・プログラム又はその複数部分を有し、ロックド・ウェイを占有することは、ロックダウン処理の不正動作に帰結するので、明らかに好ましくない。従って、ロックダウン・プログラムは、いわゆる「キャッシュ不能」メモリの領域に存在するように書き込まれてロックダウン・プログラムがキャッシュにロック状態にならないようにする必要があるか、又はロックダウン・プロセスを実行する前に他のキャッシュにプリロードされる必要がある。更に、専用のプログラムは、メモリから動作するように強制されるときは、その動作が比較的遅い。
【0013】
従って、改善されたロックダウン技術が提供される必要がある。
【0014】
【発明の概要】
本発明の第1の特徴によれば、プロセッサと、複数のエントリを有するnウェイのセット・アソシエイティブ・キャッシュであって、各エントリが1以上のデータ値及び対応するアドレス識別子を記憶するように配列され、前記プロセッサがnウェイのうちの1ウェイ以上を選択してロックダウン・モードにより動作するように動作可能であって、前記ロックダウン・モードを使用してデータ値を対応するウェイにロックさせる前記セット・アソシアティブ・キャッシュと、複数のロックダウン・コントローラであって、それぞれがが対応するウェイに関連されている前記ロックダウン・コントローラとを備え、各ロックダウン・コントローラは、前記対応するウェイが前記ロックダウン・モードにあるときに、そのアドレス識別子がアドレス範囲に存在するデータ値のみを前記対応するウェイにロックするように前記プロセッサにより指定されたアドレス範囲を記憶するように配列されたアドレス・レジスタを備えている。
【0015】
本発明の実施例によれば、そのアドレス識別子が前記プロセッサにより指定されたアドレス範囲に含まれるデータ値のみが、前記ロックダウン・モード中に、前記ロックダウン・コントローラにより前記対応するウェイにロックされる。
【0016】
この技術は、好ましい実施例においてロックダウン中の複雑さを減らし、前記キャッシュにおけるロックされたデータ値のメモリの慎重な管理に、専用のロックダウン・プログラムを必要とせず、代わってデータ値のロックキングが自動的に発生する。好ましい実施例のnウェイのセット・アソシアティブ・キャッシュ・メモリにおいて、1以上のロックダウン・コントローラが、ロックダウン・モードにおいて使用するアドレス範囲を受け取ることができる。キャッシュすべきデータ値を受け取ったときは、前記キャッシュは、データ値を記憶するために利用可能な複数のウェイのうちの1ウェイを選択する。ロックダウンが必要なときは、前記プロセッサは対応するウェイに関連したロックダウン・コントローラにロックダウン・モードに入るように指令する。その後、そのアドレス識別子が前記ロックダウン・コントローラのアドレス範囲に存在するデータ値が対応するウェイに記憶されてロックダウンにされる。前記アドレス識別子が前記ロックダウン・コントローラのアドレス範囲に含まれないときは、前記データ値を他のウェイのうちの1つのウェイに記憶する。
【0017】
しかしながら、本発明の一実施例においてロックダウン・プログラムを依然として使用するときは、そのプログラムがキャッシュのロックダウン・ウェイに偶発的にロックされることに、プログラムラマが係わる必要はないので、前記プログラムを書く際にプログラムラマに課せられる制約が軽減される。全てのプログラムラマは、ロックダウン・プログラムの命令及びデータのアドレス識別子がロックダウン・コントローラに指定されたアドレス範囲に含まれないことを保証することが必要である。この簡単な措置により、ロックダウン・プログラムのデータ値がロックド・ウェイを占有せず、かつ前記ロックダウン・プログラムの正しい動作を阻止しないことを保証することができる。特に、ロックダウン・プログラムがいわゆる「キャッシュ不能」メモリの領域に存在するように、又はロックダウン処理を実行する前に他のキャッシュ・ウェイにプリロードされるように、ロックダウン・プログラムを書く必要性はない。
【0018】
この技術は、更に、ロックダウン・コントローラがロックダウンに関するアドレス範囲を記憶することができるので、柔軟性が増大するが、しかしロックダウンは、前記プロセッサがロックダウン・モードを選択するときに開始されるだけである。従って、ロックダウンは、要求により又は要求されたときに、開始又は終了可能とされる。
【0019】
各ロックダウン・コントローラは、好ましくは、対応するウェイに対してロックダウン・モードが選択されたときを認識するモード・インジケータを更に備える。
【0020】
好ましい実施例において、前記モード・インジケータは、各ウェイが好ましくは、多数の異なるモードにより動作することができるので、対応するウェイに対して選択されたモードについての情報を提供する。従って、好ましい実施例において、前記モード・インジケータは、対応するウェイが全てのデータ値を記憶するために利用できるか、任意のデータを記憶するのに利用できないか、又はロックド・データ値を記憶するためにのみ利用できるのかについて判断を実行できることになる。
【0021】
モード・インジケータは、好ましくは、エネーブル・ロックダウン・フラグ(enable lockdown flag)を備え、前記プロセッサによりこのエネーブル・ロックダウン・フラグがセットされると、ロックダウン・モードが選択される。
【0022】
好ましい実施例において、エネーブル・ロックダウン・フラグがセットされたときは、そのアドレス識別子がアドレス範囲に存在するデータ値を対応するウェイにロックする。エネーブル・ロックダウン・フラグがセットされていないときは、ロックダウン・コントローラは通常アンロック・モードにより動作し、対応するウェイに任意のデータ値を記憶することができる。
【0023】
モード・インジケータは、任意選択として、ディセーブル・アンロック・アロケーション・フラグ(disable unlocked allocation flag)を備えており、ディセーブル・アンロックド・アロケーションフラグがセットされたときは、対応するウェイは、任意のアンロック・データ値を記憶するのが禁止される。
【0024】
従って、ディセーブル・アンロックド・アロケーション・フラグがセットされていないときは、対応するウェイは、利用可能であり、任意のデータ値を記憶することができる。しかしながら、ディセーブル・アンロックド・アロケーション・フラグがセットされたときは、対応するウェイは、更なるアンロックド・データ値を記憶するのが禁止される。
【0025】
エネーブル・ロックダウン・フラグ及びディセーブル・アンロックド・アロケーション・フラグを共に備えた実施例では、対応するウェイに下記のモードが発生することができる。即ち、任意のデータ値を記憶する(エネーブル・ロックダウン・フラグはリセット、ディセーブル・アンロックド・アロケーション・フラグはリセット)、データ値を記憶しない(エネーブル・ロックダウン・フラグはリセット、ディセーブル・アンロックド・アロケーション・フラグはセット)、ロックド・データ値のみ記憶する(エネーブル・ロックダウン・フラグはセット、ディセーブル・アンロックド・アロケーション・フラグはセット)。
【0026】
アドレス範囲内のアドレス数は、好ましくは、対応するウェイにおけるエントリ数に等しい。
従って、選択した全ウェイを使用してロックド・データにより完全に満たすことができる。
代替として、アドレス範囲内のアドレス数は、対応するウェイにおけるエントリ数よりも少ない。
従って、狭いアドレス範囲を選択したウェイの一部にロック可能である。
【0027】
習熟する者には、以上の技術により、完全なウェイは、ロックされているとして表示される必要があり、従って利用可能なキャッシュのサイズが減少することを理解すべきである。これは、特にハイ・アソシアティブ・キャッシュおいて問題となる恐れはないが、前述したようなロー・アソシアティブ・キャッシュのときは、キャッシュの相当量(例えば、図1Bの1/4)が使用不能となる。
【0028】
そのために、このキャッシュは、好ましくは、各エントリ用のロックダウン・フィールドを更に備えており、これがセットされることにより、そのエントリにおける1以上のデータ値がロックされていること表示する。
【0029】
従って、各データ値は、ロックされていると個別的に表示可能とされ、またロックダウン・フィールドがセットされているので、このキャッシュは、ロックド・データ値をアンロックド・データ値により重ね書きされない。従って、このような良い実施例では、ディセーブル・アンロックド・アロケーション・フラグをセットさせる必要はなく、各ロックド・データ値が対応するロックダウン・フィールドのセットによりそのようにマークされているので、そのウェイに配置されたいかなるアンロックド・データにより重ね書きされる恐れはない。対応するウェイに所望のデータ値をロックすると、エネーブル・ロックダウン・フラグがクリアされて、アドレス範囲に含まれる更なるデータ値をロックド・データにより重ね書きするのを禁止する。
【0030】
この解決方法は、ロックド・データ値及びアンロックド・データ値がキャッシュの同一ウェイを共有するのを可能にして、キャッシュの利用を改善するのに役立つ。完全なウェイは、ロックされたと表示される必要はないので、これは、アンロックド・データ値用に利用可能なキャッシュのサイズを増加させる。この解決方法は、キャッシュ全体で各ウェイが大きな割合を占めるロー・アソシアティブ・キャッシュにとって特に利点となる。
【0031】
好ましくは、各データ値は1つのキャッシュ・ラインを備え、またロックダウン・フィールドは1ビットを備えている。
従って、完全なキャッシュ・ラインは、単に1ビットを使用することによりロックされたと表示されてもよい。
【0032】
第2の特徴から見ると、本発明の第1の観点によるデータ処理装置用のロックダウン・コントローラを提供するものであり、前記ロックダウン・コントローラは、前記プロセッサにより指定されたアドレス範囲を記憶するように配列されて、対応するウェイがロックダウン・モードにあるときに、そのアドレス識別子がアドレス範囲に存在するデータ値のみを、対応するウェイにロックするようにしたアドレス・レジスタを備えている。
【0033】
本発明の他の特徴によれば、nウェイのセット・アソシアティブ・キャッシュにおけるデータ値をロックする方法が提供され、前記キャッシュは複数のエントリを有し、各エントリが1以上のデータ値及び対応するアドレス識別子を記憶するように配列され、前記方法は、a)ロックダウン・モードにより動作するようにウェイを選択するステップと、b)プロセッサにより指定されたアドレス範囲を、ステップ(a)で選択されたウェイに関連したロックダウン・コントローラのアドレス・レジスタに記憶するステップと、c)キャッシュにデータ値を受け取ったときに、前記対応するアドレス識別子がアドレス範囲に存在するときは、ステップ(a)で選択したウェイに前記データ値をロックするステップとを含む。
【0034】
添付する図面に示すように、本発明の好ましい複数の実施例を参照して一実施例により、本発明を詳細に説明する。
【0035】
【好ましい実施例の説明】
本発明の好ましい複数の実施例を説明する前に、セット・アソシアティブ・キャッシュの概要説明を理解するのを助けるために、図3、図4及び図5を参照してこれらの動作及び配列を説明する。
【0036】
4ウェイのセット・アソシアティブ・キャッシュ30’に関連するデータ処理装置を図3のブロック図を参照して説明する。図3に示すように、データ処理装置は、メモリ80から受け取った命令を処理するように配列されたプロセッサ・コア10を有する。更に、これらの命令を処理するために、メモリ80からプロセッサ・コア10が必要とするデータ値を読み出すこともできる。セット・アソシアティブ・キャッシュ30’は、メモリ80から受け取ったデータ値(データ及び/又は命令でもよい)を記憶するために設けられており、従ってこれらは、次にプロセッサ・コア10により容易にアクセス可能にされる。キャッシュ・コントローラ20’は、セット・アソシアティブ・キャッシュ30’におけるデータ値のメモリを制御し、かつセット・アソシアティブ・キャッシュ30’からデータ値を読み出すのを制御する。データ値は適当なサイズが可能であることを理解すべきである。好ましい実施例を説明するために、各データ値は、サイズが1ワード(32ビット)である。
【0037】
プロセッサ・コア10がデータ値の読み出しを必要とする時、プロセッサ・アドレス・バス54上のデータ値用のアドレス、及び制御バス52上の制御信号を設定することにより要求を開始する。制御バスは、要求が命令又はデータ、読み出す又は書き込みをワード、ハーフ・ワード又はバイトか否かのような情報を含む。バス54上のプロセッサ・アドレスは、セット・アソシアティブ・キャッシュ30’により受け取られ、かつセット・アソシアティブ・キャッシュ30’におけるアドレスと比較されて要求されたデータ値がセット・アソシアティブ・キャッシュ30’に記憶されているか否か判断する。データ値がセット・アソシアティブ・キャッシュ30’に記憶されているときは、セット・アソシアティブ・キャッシュ30’は、プロセッサ・データ・バス56にデータ値を出力する。アドレスに対応するデータ値がセット・アソシアティブ・キャッシュ30’内に存在しないときは、バス・インターフェース・ユニット(BIU)40を使用してメモリ80からデータ値を読み出す。
【0038】
BIU40は、制御バス52上のプロセッサ制御信号を調べてプロセッサ・コア10が発行した要求が読み出し命令か、又は書き込み命令かを判断する。読み出し要求のときに、キャッシュ・ミス(パス120上の信号により示されている。例えば、信号の「ロー」はキャッシュ・ミスを示し、信号の「ハイ」はキャッシュ・ヒットを示す)が存在すれば、BIUは、メモリ80からの読み出しを開始し、プロセッサ・アドレス・バス54からのアドレスを外部アドレス・バス64に渡す。制御信号は、バス62上に設定される。メモリ80は、メモリ読み出しを要求するバス62上の制御信号について判断し、次いで外部アドレス・バス64上に表示されているアドレスにあるデータ値をデータ・バス66上に出力する。次いで、BIU40は、データをデータ・バス66からプロセッサ・データ・バス56に渡して、セット・アソシアティブ・キャッシュ30’に記憶し、かつプロセッサ・コア10により読み出すことができる。続いて、プロセッサ・コア10により、セット・アソシアティブ・キャッシュ30’からデータ値を容易に直接、アクセスすることができる。
【0039】
セット・アソシアティブ・キャッシュ30’は、典型的には、多数のキャッシュ・ラインを備え、各キャッシュ・ラインは、複数のデータ値を記憶するように配列されている。好ましい実施例において、メモリ80からデータ値を読み出してセット・アソシアティブ・キャッシュ30’に記憶するときは、キャッシュ・ラインの全てを満たすためにメモリから多数のデータ値を読み出す。この技術はしばしば「ラインフィル(充填)」と呼ばれる。好ましい実施例において、このようなラインフィルは、プロセッサ・コア10がセット・アソシアティブ・キャッシュ30’に現在記憶されていないキャッシュ可能なデータ値を要求することに起因する。これは、先に説明したメモリ読み出し処理を発生させる。読み出しミスによりラインフィルを実行することに加えて、採用した割り当て方針に従って、書き込みミスにより更にラインフィルを実行することも可能なことを理解すべきである。
【0040】
ラインフィルは、外部バス60を介してメモリ80をアクセスすることを必要とするので、この処理は、比較的に低速であり、メモリ速度及び外部バスにより支配される。
【0041】
図4は、プロセッサ・アドレス・バス54に出力するアドレス300の内容を示す。アドレス300は、それぞれTAG部310、SET部312、WORD部314及びBYTE部316からなる。アドレス300のSET部312は、セット・アソシアティブ・キャッシュ30’内の特定セットを認識するために使用される。WORD部314は、プロセッサ・コア10によるアクセスの対象であるキャッシュ・ライン内に特定のワードを認識し、一方、BYTE部316は、必要ならば、ワード内の特定のバイトを指定可能にする。
【0042】
図5は、プロセッサ・コア10がデータ値を要求するときのセット・アソシアティブ・キャッシュ30’内の動作を更に詳細に示す。セット・アソシアティブ・キャッシュ30’は、4つのウェイ、各ウェイに関連したコンパレータ211、ウェイ・セレクタ213、及びマルチプレクサ219を備えている。
【0043】
各ウェイは、TAGメモリ215及びデータ・メモリ217を備えている。各ウェイのデータ・メモリ217は、データ値を記憶するように配列された複数のキャッシュ・ラインを含む。各キャッシュ・ラインには、TAGを記憶するデータ・メモリ215におけるエントリが関連される。
【0044】
読み出しを要求するときは、そのデータ値に対するアドレス300をプロセッサ・アドレス・バス54上に設定する。このアドレス300は、プロセッサ・アドレス・バス54を介してセット・アソシアティブ・キャッシュ30’により受け取られる。各ウェイにおけるTAGメモリ215及びデータ・メモリ217は、アドレス300を受け取る。TAGメモリ215は、アドレス300のSET部312により指定された位置に記憶されたTAG値を関連するコンパレータ211に出力する。データ・メモリ217は、アドレス300のSET部312、WORD部314及びBYTE部316により指定された位置に記憶されたデータ値をマルチプレクサ219に出力する。そこで、各コンパレータ211は、ウェイから出力されたTAG値をプロセッサ・アドレス・バス54上に配置されたアドレス300のTAG部310と比較する。
【0045】
TAG値及びTAG部310が一致するときは、ウェイ・セレクタ213に信号を送出する。ウェイ・セレクタ213は、パス120上でキャッシュ・ヒットを示し、かつ選択信号をマルチプレクサ219に出力する。次いで、マルチプレクサ219は、対応するデータ値を選択して、プロセッサ・データ・バス56に出力する。このようにプロセッサ・コア10はキャッシュ30’から直接データが供給される。
【0046】
TAG値及びTAG部310が一致しないときは、ウェイ・セレクタ213に信号を送出しない。次いで、ウェイ・セレクタ213は、パス120上に適当な信号を供給することにより、キャッシュ・ミスを表示する。またメモリ80からデータ値を読み出してセット・アソシアティブ・キャッシュ30’に記憶する。従って、プロセッサ・コア10は、メモリ80から読み出す間の遅延後に、データ値が供給され、データ値及びTAG値は、セット・アソシアティブ・キャッシュ30’に記憶される。これは、前にセット・アソシアティブ・キャッシュ30’に記憶したデータ値及びTAG値に重ね書きをする。
【0047】
しかしながら、重ね書きされたデータ値が次の動作のためにプロセッサ・コア10により要求されたときは、データ値に対するアクセス時間は、メモリ80からデータ値をフェッチする必要があるので、予測できないことになる。これは、特にリアル・タイム・システムにおいて欠点となる。従って、データ値に対するアクセス時間を保証する必要があるときは、セット・アソシアティブ・キャッシュ30’におけるこれらのデータ値をロックダウンすることが有用である。ロックダウンは、好ましくは、ブートアップ・ルーチン中に開始されてもよく、割り込み又は臨界的なランタイム・ルーチンのようなルーチンに関するデータ値は、セット・アソシアティブ・キャッシュ30’にロックされている。そこで、これらのルーチンは、速度利益が得られるセット・アソシアティブ・キャッシュ30’からプロセッサ・コア10に適用可能となる。ロックダウンは、更に処理中の他の適当な時点で発生する恐れがある。
【0048】
図6は、本発明の好ましい実施例による4ウェイのセット・アソシアティブ・キャッシュ30’用のキャッシュ・コントローラ20’を示す。キャッシュ・コントローラ20’は、4つのロックダウン・コントローラ240、250、260、270を備えており、それぞれがセット・アソシアティブ・キャッシュ30’の複数ウェイのうちの対応する1ウェイに関連される。ロックダウン・コントローラ240、250、260、270の機能は、ソフトウェア又はハードウェア、又は両者の組み合わせにより実施可能とされる。
【0049】
概要的に、各ロックダウン・コントローラ240、250、260、270は、ロックダウン・モードにおいて、指定されたアドレス・レジスタ内のデータ値をセット・アソシアティブ・キャッシュ30’の対応するウェイにロックするように配列される。
【0050】
各ロックダウン・コントローラ240、250、260、270は、ロックダウン・レジスタ210、エネーブル・ロックダウン・フラグ220及びディセーブル・アンロックド・アロケーション・フラグ230を備えている。各ロックダウン・コントローラ240、250、260、270は、制御バス52上にプロセッサ・コア10から制御信号を受け取り、ウェイ選択信号をセット・アソシアティブ・キャッシュ30’の対応するウェイに出力する。
【0051】
ディセーブル・アンロックド・アロケーション・フラグ230は、プロセッサ・コア10によりセット又はクリアされる。ディセーブル・アンロックド・アロケーション・フラグ230がクリアされると、対応するウェイにどのようなデータ値も記憶することができる。ディセーブル・アンロックド・アロケーション・フラグ230がセットされると、ロックド・データのみを対応するウェイに記憶することができる。ディセーブル・アンロックド・アロケーション・フラグ230は、好ましくは、開始の際にクリアするように配列された1ビット(論理「1」はセットを表し、論理「0」はクリアを表す)を備えている。
【0052】
ロックダウン・アドレス・レジスタ210は、プロセッサ・コア10によりセットされる。ロックダウン・アドレス・レジスタ210は、プロセッサ・コア10により指定されたアドレス・レジスタを認識するように配列され、従って例えば、上位アドレス及び下位アドレスを明示的に記憶することができる。しかしながら、ロックダウン・アドレス・レジスタ210は、好ましくは、アドレス300の特定のTAG部に対応するアドレスを記憶する。TAG部は、アドレス300の最上位ビットであり、従ってアドレス・レジスタを無条件に指定する。
【0053】
アドレス・エネーブル・ロックダウン・フラグ220は、プロセッサ・コア10によりセット又はクリアされる。アドレス・エネーブル・ロックダウン・フラグ220がセットされると、ロックダウン・コントローラは、アンロック・モードにより動作する。アドレス・エネーブル・ロックダウン・フラグ220がクリアされると、ロックダウン・コントローラは、アンロック・モードにより動作する。
【0054】
ここで、キャッシュ・コントローラ20’の動作を更に詳細に説明する。開始により、ロックダウン・アドレス・レジスタ210、エネーブル・ロックダウン・フラグ220及びディセーブル・アンロックド・アロケーション・フラグ230は、全てクリアされる。従って公知の方法により、任意のデータ値がセット・アソシアティブ・キャッシュ30’の任意のウェイに記憶可能であり、必要により公知の方法により、セット・アソシアティブ・キャッシュ30’に既に存在するデータ値に重ね書きされる。
【0055】
ロックダウンが必要とされるときは、ロックダウン・コントローラを2モードのうちの1モード、即ち「プリロード及びロック」、又は「バックグラウンド・ロック」により動作させることができる。
【0056】
プリロード及びロックでは、プロセッサ・コア10がアドレス範囲によりロックダウン・コントローラのうちの1つのロックダウン・アドレス・レジスタ210を選択してセットする。その後、ディセーブル・アンロックド・アロケーション・フラグ230及びエネーブル・ロックダウン・フラグ220は、同一のロックダウン・コントローラにセットされ、一方、他のロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ230及びエネーブル・ロックダウン・フラグ220は、クリアされたままである(勿論、データ値が他のキャッシュ・ウェイに既にロックされている限りてあって、その場合に、ディセーブル・アンロックド・アロケーション・フラグが他の当該キャッシュ・ウェイにセットされる)。
【0057】
ロックダウン・プログラムは、次にプロセッサ・コア10により実行され、データ値をロードしてセット・アソシアティブ・キャッシュ30’にロックされる。要求されたデータ値がセット・アソシアティブ・キャッシュ30’に現在、記憶されていないと仮定すると、セット・アソシアティブ・キャッシュ30’は、パス120上にキャッシュ・ミスを出力し、かつBIU40は、前述したように、メモリ80からデータ値をフェッチする。データ値のアドレスがロックダウン・アドレス・レジスタ210のアドレス範囲に含まれ、プロセッサ・データ・バス56からデータ値が得られるときは、キャッシュ・ウェイを選択し、データ値をロックド・ウェイに記憶する。しかしながら、データ値のアドレスがロックダウン・アドレス・レジスタ210のアドレス範囲に含まれないときは、ディセーブル・アンロックド・アロケーション・フラグ230がクリアされている複数のウェイのうちの1つのウェイを選択し、データ値をアンロックド・ウェイに記憶する。従って、アドレス範囲のアドレスを有するデータ値のみをロックド・ウェイにロックし、これに対し、他のアドレスを有するキャッシュ可能なデータ値を複数のアンロックド・ウェイのうちの1つのウェイにロックする。これは、ロックダウン・プログラムが書き込まれているウェイに対する制約を軽減し、ロックダウン・プログラムのデータ値そのものがアドレス範囲内に存在しない限り、これらが誤ってロックド・ウェイにロックされることはない。
【0058】
所望のデータ値がキャッシュ・ウェイにロックされたときは、好ましくは、エネーブル・ロックダウン・フラグ220がクリアされて、そのアドレス範囲内のアドレスを有する更なるデータ値をロックド・ウェイにロックされたデータ値に重ね書きするのを禁止する。更に、ロックド・データがロックド・ウェイに残っている間に、ディセーブル・アンロックド・アロケーション・フラグ230は、セットされたままであり、どのようなアンロックド・データもロックド・データに重ね書きするのを禁止する。
【0059】
従って、本発明の好ましい実施例によるプリロード及びロック・モードにおいて、アドレス範囲がロックダウン・プログラムのアドレスを含むことがないように、アドレス範囲が選択されている限り、所望のデータ値のみがセット・アソシアティブ・キャッシュ30’のロックド・ウェイにロックされる。都合よいことに、これは、ロックダウン・プログラムのデータ値がロックド・ウェイを占有しないこと、及びロックダウン・プログラムの正しい動作を妨げないことを保証する。従って、ロックダウン・プログラムは、通常、キャッシュ不能なメモリにおいて動作して、セット・アソシアティブ・キャッシュ30’にロックされないように、特別に書き込まれる必要はない。また、ロックダウン・プログラムはセット・アソシアティブ・キャッシュ30’にロックされることはないので、ロックダウン・プログラムがセット・アソシアティブ・キャッシュ30’から動作させることが可能であり、速度の利点を獲得できる。
【0060】
バックグラウンド・ロック・モードにおいて、プロセッサ・コア10は、アドレス範囲によりロックダウン・コントローラのうちの1つのロックダウン・アドレス・レジスタ210を選択し、かつセットする。その後、ディセーブル・アンロックド・アロケーション・フラグ230及びエネーブル・ロックダウン・フラグ220は、同一のロックダウン・コントローラにセットされ、これに対して、他のロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ230及びエネーブル・ロックダウン・フラグ220は、クリアされたままである。
【0061】
次いで、プロセッサ・コア10によりアプリケーション・コードを実行する。プロセッサ・コア10により要求されたデータ値がセット・アソシアティブ・キャッシュ30’に現在記憶されていないときは、前述したように、セット・アソシアティブ・キャッシュ30’は、パス120にキャッシュ・ミスを出力し、またBIU40は、メモリ80からそのデータ値をフェッチする。データ値のアドレスがロックダウン・アドレス・レジスタ210のアドレス範囲に含まれているときは、プロセッサ・データ・バス56上のデータ値が利用可能になると、キャッシュ・ウェイを選択し、ロックド・ウェイにデータ値を記憶する。しかしながら、データ値のアドレスがロックダウン・アドレス・レジスタ210のアドレス範囲内に含まれないときは、クリアされたディセーブル・アンロックド・アロケーション・フラグ230により、複数のウェイのうちの1ウェイを選択し、かつデータ値をアンロックド・ウェイに記憶する。従って、アドレス範囲内のアドレスを有するデータ値のみをロックド・ウェイにロックし、これに対し、他のアドレスを有するデータ値をアンロックド・ウェイのうちの1つにロックする。
【0062】
好ましくは、ロックド・データがロックド・ウェイにとどまる間に、ディセーブル・アンロックド・アロケーション・フラグ230はセットされたままである。
【0063】
従って、本発明の好ましい実施例によるバックグラウンド・ロック・モードは、特定のアドレス範囲内のデータ値のみをセット・アソシアティブ・キャッシュ30’のロックド・ウェイにロックするので、データ値のメモリを慎重に管理するために専用のロックダウン・プログラムを必要としない。その代わり、アプリケーション・コードの通常の動作中にデータ値をロックド・ウェイに自動的に記憶することができ、それは、キャッシュ可能なデータ値をロックするか、そのアドレスによらないかのいずれかである。
【0064】
いずれのモードにおいても、ロックド・データ値をもはや必要としなくなれば、ディセーブル・アンロックド・アロケーション・フラグ230がクリアされる。その後、アンロックド・データ値は、ロックド・データ値に重ね書き可能である。更に、新しいアドレス範囲をロックダウン・アドレス・レジスタ210にロードしたときは、ロックダウン・モード中に新しいロックド・データを前記以上必要でないロックド・データに重ね書きできる。更に、ディセーブル・アンロックド・アロケーション・フラグ230は、特定の処理用のウェイを効果的に「予約」するためにセットされてもよい。この技術は、例えば、利用可能なキャッシュ・サイズを一時的に減少させることが望ましい状況での多重処理環境に有用である。利用可能なキャッシュ・サイズを減少させると、典型的には、多分1回のみデータ値をアクセスすることになるので、アプリケーション・プログラムのうちの1つがキャッシュの使用において特に非効率なことが解っている状況において効果的となり得るのに対し、他のアプリケーションは、データ値を多数回、アクセスすることにより、キャッシュの使用が特に効率的となり得る。従って、この技術を使用して、効率的でないアプリケーション・プログラムがキャッシュの小さな部分のみを利用するだけでよいことを保証することができる。
【0065】
4つのロックダウン・コントローラを説明したが、各ウェイに専用のロックダウン・コントローラを設ける必要性をなくすことができるので、わずかなロックダウン・コントローラを設けることでもよいことを理解すべきである。その代わりに、特定のウェイをロックダウン・コントローラと関連させるようにセレクタを設けてもよい。しかしながら、その場合は、各ウェイにディセーブル・アンロックド・アロケーション・フラグ230を備えてロックド・データ値をそれぞれのウェイに記憶しているのか否かを表すことが必要となる。更に、ロックされていると決して表示されることのない少なくとも1つのウェイを有することが望ましく、かつこの実施例では、丁度3つのロックダウン・コントローラが必要となるであろう。
【0066】
関心のある読者のために、ロックダウン・コントローラを従来技術の解決方法と同様の方法により動作可能にし、これによって従来技術の解決方法と逆で両立を可能にする「強制モード」をここで説明する。
【0067】
強制モードでは、プロセッサ・コア10がロックダウン・プログラムが既にセット・アソシアティブ・キャッシュ30’のロックされている領域にロードされている、又はメモリ80のキャッシュ不能領域にある。その後、ディセーブル・アンロックド・アロケーション・フラグ230が1ロックダウン・コントローラを除き、全てセットされ、かつ全ロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ230がクリアされたままである。従って、唯一のウェイが全てのデータ値を受け取る(その対応するロックダウン・コントローラは、そのディセーブル・アンロックド・アロケーション・フラグをクリアさせている)。
【0068】
そこで、ロックダウン・プログラムを実行させて、複数のデータ値を1つのウェイにロードさせ、これが任意のデータ値を受け取ることになる。
【0069】
全てのデータ値がロードされると、既にセットされた全てのロックダウン・コントローラにおけるディセーブル・アンロックド・アロケーション・フラグ230をクリアする。逆に、データ値をロードしたウェイに対応するロックダウン・コントローラに対して、ディセーブル・アンロックド・アロケーション・フラグをセットして更なるアンロックド割り当てを禁止する。従って、データ値をロードした1ウェイを除き、全てのウェイは、全てのデータ値を受け取る。データ値をロードした1ウェイは、ロックド・データ値を単に受け取るだけである。しかしながら、ディセーブル・アンロックド・アロケーション・フラグ230はセットされていず、ロックダウン・コントローラは、ロックダウン・モードでないので、ロデータ値をロックダウンすることはしない。従って、データ値は、セット・アソシアティブ・キャッシュ30’の当該ウェイにおいて効果的にロックされる。
【0070】
ここで、ライン毎を基本としてデータ値をロックする技術をエネーブルする更なる実施例を説明する。
好ましい実施例の説明をする前に、理解を助けるため、キャッシュの詳細な構成の概要説明を行う。
【0071】
図7は、キャッシュ30”のウェイ0の詳細な図を示す。前述したように、TAGメモリ215’における各エントリ330は、データ・メモリ217’において対応するキャッシュ・ライン370を有し、各キャッシュ・ラインは、複数のデータ値を有する。アドレス300のTAG部310がTAGメモリ215’の複数のTAGエントリ330のうちの1エントリにおけるTAGと一致するときは、キャッシュ・ラインが有効であると仮定して(以下、各ラインのマーキングを有効として説明する)、アドレス300のWORD部314により認識された対応するキャッシュ・ライン370のデータ値は、キャッシュから出力される。
【0072】
各キャッシュ・ライン370用のTAGエントリ330に記憶したTAGに加えて、各ラインに対して多数のステータス・ビットが設けられる。ステータス・ビットは、好ましくは、TAGメモリ215’内に設けられる。従って、各ラインに関連して、有効ビット340及びダーティ(dirty)ビット350が存在する。当該技術分野に習熟する者に理解されるように、有効ビット340を使用して対応するキャッシュ・ラインに記憶したデータ値が依然として有効か否かが調べられて表示をする。従って、有効ビット340をセットすると、対応するデータ値が有効であることを表示することになり、これに対し、有効ビット340をリセットすると、データ値のうちの少なくとも1データ値がこれ以上有効でないことを表示する。
【0073】
更に、当該技術分野に習熟する者に理解されるように、ダーティ・ビット350は、対応するキャッシュ・ラインに記憶されたどのようなデータ値もメモリ80に記憶したデータ値より最新であるか否かを表示するために使用される。ダーティ・ビット350は、メモリ80の書き戻し領域に関連するものであって、プロセッサ・コア10から出力され、かつキャッシュ30”に記憶されたデータ値は、メモリ80に速やかに渡して記憶されるのではなく、むしろ特定のキャッシュ・ラインをキャッシュ30”から重ね書きするか、又は「クリアする」時点で、このデータ値をメモリ80に渡すべきか否かについての判断を行う。従って、セットされていないダーティ・ビット350は、対応するキャッシュ・ラインに記憶されたデータ値がメモリ80に記憶されたデータ値に対応することを表示することになり、これに対し、セットされているダーティ・ビット350は、対応するキャッシュ・ラインに記憶されたデータ値のうちの少なくとも1データ値が更新されたことを表示することになり、更新されたデータ値は、メモリ80にまだ渡されていない。
【0074】
典型的な従来技術のキャッシュにおいて、キャッシュ・ラインにおけるデータ値がキャッシュに重ね書きされる場合に、ダーティ・ビット350及び有効ビット340がデータ値が共に有効であり、かつダーティであることを表示しているときは、これらのデータ値は、記憶のためにメモリ80に出力されることになる。データ値が有効でない、又はダーティでないときは、データ値をメモリ80に戻す必要性はなく、データ値を重ね書きすることができる。
【0075】
好ましい実施例において、各キャッシュ・ラインに対応する更なるビットが設けられ、これを以下でロックダウン・ビット360と呼ぶ。ロックダウン・ビット360は、キャッシュ・ライン毎を基本としてロックダウン・データ値に対して使用される。
【0076】
開始において、各ロックダウン・ビット360がクリアされる(論理「0」はクリアされていることを表し、論理「1」はセットされていることを表す)。データ値がキャッシュ30”にロックされたときは、関連されたロックダウン・ビット360がセットされる。ロックダウン・ビット360がセットされると、ロックされるように表されたデータ値のみが既存のロックド・データ値に重ね書き可能である。ロックダウン・ビット360がクリアされると、任意のデータ値が既存のデータ値に重ね書きすることができる。
【0077】
以上で説明したプリロード及びロックモード、及びバックグラウンド・ロックモードを考えると、ロックダウン・ビットを使用するときは、ロックダウン・ビット360がアンロックド・データ値をロックド・データ値に重ね書きするのを禁止するので、ディセーブル・アンロックド・アロケーション・フラグ230は、どのウェイにおいてもセットされる必要性は全くない。
【0078】
プロセッサ・コア10は、アドレス範囲によりロックダウン・コントローラのうちの一つのロックダウン・アドレス・レジスタ210を選択し、かつセットする。その後、ディセーブル・アンロックド・アロケーション・フラグ230は、同一のロックダウン・コントローラにセットされ、これに対し、他のロックダウン・コントローラのディセーブル・アンロックド・アロケーション・フラグ230は、クリアされたままである。データ値のアドレスがロックダウン・アドレス・レジスタ210のアドレス範囲に含まれるときは、キャッシュ・ウェイが選択され、データがそのロックド・ウェイに記憶され、ロック・ビットがセットされる。しかしながら、データ値のアドレスがロックダウン・アドレス・レジスタ210のアドレス範囲に含まれないときは、他のウェイのうちの1ウェイを選択し、かつデータ値をそのアンロックド・ウェイに記憶することができる。代替として、データ値のアドレスがロックダウン・アドレス・レジスタ210のアドレス範囲内に含まれないときは、ロックド・ウェイは依然として選択されるが、しかしデータ値は、キャッシュ・ラインに記憶され、そこでのロック・ビットはセットされていず、またロック・ビットはクリアされたままである。
【0079】
従って、アドレス範囲内のアドレスを有するデータ値のみがロックド・ウェイにロックされ、かつロック・ビットがセットされ、これに対し、他のアドレスを有するデータ値はキャッシュ30”内のアンロックド位置に記憶され、また対応するロック・ビットは、クリアされたままである。
【0080】
ロックダウン・ビット360は、アンロックド・データ値をロックド・データ値に重ね書きするのを禁止する。しかしながら、これらのロックド・データ値は、既存のロックド・データ値に重ね書きする恐れがある。ロックド・データ値がもはや要求されなくなると、ロックダウン・ビット360は、ロックド・データ値を新しいデータ値により重ね書きできるように、クリアされる必要がなくなる。
【0081】
従って、ロックド・データ値及びアンロックド・データ値は、キャッシュ利用の改善に役立つキャッシュの同一ウェイを共有可能にする。従って、完全なウェイは、ロックされていると表示される必要はなく、従って、アンロックド・データ値用に利用可能なキャッシュのサイズを増加させる。この解決方法は、各ウェイがキャッシュ全体のかなりの比率となるロー・アソシアティブ・キャッシュに対して特に効果的である。
【0082】
ここでは特定の実施例を説明したが、本発明はこれらに限定されず、本発明の範囲内で多くの変形及びこれに対する付加が可能であることを理解すべきである。例えば、本発明の範囲から逸脱することなく、独立請求項の特徴により下記の従属請求項の特徴の種々の組み合わせが実施できる。
【図面の簡単な説明】
【図1】Aは、ハイ・アソシアティブ・キャッシュの概要図である。Bは、ロー・アソシアティブ・キャッシュの概要図である。
【図2】ロックダウンに対する従来技術の解決方法を示すブロック図である。
【図3】本発明を利用できるデータ処理装置を示すブロック図である。
【図4】アドレスの構成要素を示す図である。
【図5】ロー・アソシアティブ・キャッシュのアクセスを説明するブロック図である。
【図6】好ましい一実施例によるロックダウン・コントローラの動作を示すブロック図である。
【図7】好ましい一実施例によるロー・アソシアティブ・キャッシュの配列を示す図である。
【符号の説明】
10 プロセッサ・コア
1 キャッシュ・コントローラ
30’ セット・アソシアティブ・キャッシュ
40 バス・インターフェース・ユニット(BIU)
52 制御バス
54 プロセッサ・アドレス・バス
56 プロセッサ・データ・バス
62 バス
80 メモリ
Claims (12)
- プロセッサと、
複数のエントリを有するnウェイのセット・アソシアティブ・キャッシュであって、各エントリが1以上のデータ値及び対応するアドレス識別子を記憶するように配列される、前記セット・アソシアティブ・キャッシュと、
複数のロックダウン・コントローラであって、各ロックダウン・コントローラが対応するウェイに関連されている前記ロックダウン・コントローラを備え、
各ロックダウン・コントローラは、前記プロセッサにより指定されたアドレス範囲を記憶するアドレス・レジスタを備え、各ウェイ毎に、任意のアドレスのデータ値を新規に記憶しうるモードと、いかなるアドレスのデータ値も新規に記憶しないモードと、データ値を対応するウェイにロックするために使用されるロックダウン・モードであってアドレス識別子が前記アドレス範囲内にあるデータ値のみを対応するウェイにロックするロックダウン・モードと、を含む複数のモードの1つを特定するように構成され、
前記プロセッサは、各ウェイを前記複数のモードの1つとするように動作可能である、データ処理装置。 - 各ロックダウン・コントローラは、更に、前記対応するウェイに対して前記ロックダウン・モードが選択されていることを示すモード・インジケータを備えている請求項1記載のデータ処理装置。
- 前記モード・インジケータは、エネーブル・ロックダウン・フラグを含み、前記ロックダウン・モードは、エネーブル・ロックダウン・フラグが前記プロセッサによりセットされたときに、選択される請求項2記載のデータ処理装置。
- 前記モード・インジケータは、更に、ディセーブル・アンロックド・アロケーション・フラグを含み、前記対応するウェイは、ディセーブル・アンロックド・アロケーション・フラグがセットされたときに、アンロック・データ値を記憶するのが禁止される請求項2記載のデータ処理装置。
- 前記アドレス範囲内のアドレス数は、前記対応するウェイにおけるエントリ数に等しい請求項1記載のデータ処理装置。
- 前記アドレス範囲内のアドレス数は、前記対応するウェイにおけるエントリ数より少ない請求項1記載のデータ処理装置。
- 前記キャッシュは、更に、そのエントリにおける1以上のデータ値をロックしていることを表示するようにセットされる各エントリ用のロックダウン・フィールドを備えている請求項1記載のデータ処理装置。
- 各エントリは、キャッシュ・ラインを備え、前記ロックダウン・フィールドは1ビットを備えている請求項7記載のデータ処理装置。
- 請求項1に記載のデータ処理装置における前記ロックダウン・コントローラであるロックダウン・コントローラ。
- nウェイのセット・アソシアティブ・キャッシュにデータ値をロックする方法であって、前記キャッシュが複数のエントリを有し、各エントリが1以上のデータ値及び対応するアドレス識別子を記憶するように配列されている方法において、各ウェイは、任意のデータ値を新規に記憶しうるモードと、いかなるアドレスのデータ値も新規に記憶しないモードと、データ値を対応するウェイにロックするために使用されるロックダウン・モードであってアドレス識別子がプロセッサにより指定されたアドレス範囲内にあるデータ値のみを対応するウェイにロックするロックダウン・モードと、を含む複数のモードで動作可能であり、
a)前記ロックダウン・モードにより動作するようにウェイを選択するステップと、
b)プロセッサにより指定されたアドレス範囲を、ステップa)で選択されたウェイに関連したロックダウン・コントローラのアドレス・レジスタに記憶するステップと、
c)キャッシュにデータ値を受け取ったときに、前記対応するアドレス識別子が前記アドレス範囲内にあるとき、ステップ(a)で選択したウェイに前記データ値をロックするステップと
を含む方法。 - 前記ロックダウン・モードを選択するステップは、ロックダウン・コントローラ内のロックダウン・フラグをエネーブルするステップを含む請求項10記載の方法。
- 前記ロックするステップは、データ値を記憶するエントリ用のロックダウン・フィールドをセットすることを含む請求項10記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0025468A GB2368150B (en) | 2000-10-17 | 2000-10-17 | Management of caches in a data processing apparatus |
GB0025468.0 | 2000-10-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002163151A JP2002163151A (ja) | 2002-06-07 |
JP3917839B2 true JP3917839B2 (ja) | 2007-05-23 |
Family
ID=9901486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001317951A Expired - Lifetime JP3917839B2 (ja) | 2000-10-17 | 2001-10-16 | データ処理装置及びデータ処理装置におけるロックダウン・コントローラ及びデータ値をロックする方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US6671779B2 (ja) |
JP (1) | JP3917839B2 (ja) |
GB (1) | GB2368150B (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7373491B2 (en) * | 2002-02-27 | 2008-05-13 | Rockwell Automation Technologies, Inc. | Processor with versatile external memory interface |
US6816952B1 (en) * | 2002-05-31 | 2004-11-09 | Unisys Corporation | Lock management system and method for use in a data processing system |
US6938139B2 (en) * | 2002-06-21 | 2005-08-30 | Jp Morgan Chase Bank | Method and system for data element change across multiple instances of data base cache |
US20040015669A1 (en) * | 2002-07-19 | 2004-01-22 | Edirisooriya Samantha J. | Method, system, and apparatus for an efficient cache to support multiple configurations |
US20040182147A1 (en) * | 2003-03-19 | 2004-09-23 | Rambow Frederick H. K. | System and method for measuring compaction and other formation properties through cased wellbores |
FR2856814B1 (fr) * | 2003-06-25 | 2005-09-30 | St Microelectronics Sa | Procede de controle d'une memoire cache, et dispositif de memoire cache correspondant |
JP4765249B2 (ja) * | 2003-11-18 | 2011-09-07 | セイコーエプソン株式会社 | 情報処理装置およびキャッシュメモリ制御方法 |
JP4009306B2 (ja) * | 2003-11-18 | 2007-11-14 | 松下電器産業株式会社 | キャッシュメモリおよびその制御方法 |
US20050198442A1 (en) * | 2004-03-02 | 2005-09-08 | Mandler Alberto R. | Conditionally accessible cache memory |
US7290106B2 (en) * | 2004-10-28 | 2007-10-30 | International Business Machines Corporation | Method for processor to use locking cache as part of system memory |
US7290107B2 (en) * | 2004-10-28 | 2007-10-30 | International Business Machines Corporation | Direct deposit using locking cache |
US20080147989A1 (en) * | 2006-12-14 | 2008-06-19 | Arm Limited | Lockdown control of a multi-way set associative cache memory |
US8775863B2 (en) * | 2011-05-31 | 2014-07-08 | Freescale Semiconductor, Inc. | Cache locking control |
US8856587B2 (en) | 2011-05-31 | 2014-10-07 | Freescale Semiconductor, Inc. | Control of interrupt generation for cache |
US9009410B2 (en) | 2011-08-23 | 2015-04-14 | Ceva D.S.P. Ltd. | System and method for locking data in a cache memory |
US9081503B2 (en) | 2012-02-16 | 2015-07-14 | Apple Inc. | Methods and systems for maintaining a storage volume with holes and filling holes |
US9311251B2 (en) | 2012-08-27 | 2016-04-12 | Apple Inc. | System cache with sticky allocation |
US9158685B2 (en) * | 2012-09-11 | 2015-10-13 | Apple Inc. | System cache with cache hint control |
US20140089600A1 (en) * | 2012-09-27 | 2014-03-27 | Apple Inc. | System cache with data pending state |
US20180268042A1 (en) * | 2017-03-16 | 2018-09-20 | Linkedln Corporation | Entity-based dynamic database lockdown |
JP7363255B2 (ja) * | 2019-09-18 | 2023-10-18 | 日本電気株式会社 | 情報処理装置、情報処理方法、及び、プログラム |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5487162A (en) * | 1992-02-25 | 1996-01-23 | Matsushita Electric Industrial Co., Ltd. | Cache lock information feeding system using an address translator |
US5493667A (en) * | 1993-02-09 | 1996-02-20 | Intel Corporation | Apparatus and method for an instruction cache locking scheme |
JPH06243036A (ja) * | 1993-02-12 | 1994-09-02 | Hitachi Ltd | キャッシュ制御システム |
JPH07334428A (ja) * | 1994-06-14 | 1995-12-22 | Toshiba Corp | キャッシュメモリ |
US5574922A (en) * | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
US5761659A (en) * | 1996-02-29 | 1998-06-02 | Sun Microsystems, Inc. | Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters |
US5913224A (en) * | 1997-02-26 | 1999-06-15 | Advanced Micro Devices, Inc. | Programmable cache including a non-lockable data way and a lockable data way configured to lock real-time data |
US6047358A (en) * | 1997-10-31 | 2000-04-04 | Philips Electronics North America Corporation | Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups |
US6092159A (en) * | 1998-05-05 | 2000-07-18 | Lsi Logic Corporation | Implementation of configurable on-chip fast memory using the data cache RAM |
US6483516B1 (en) * | 1998-10-09 | 2002-11-19 | National Semiconductor Corporation | Hierarchical texture cache |
US6591347B2 (en) * | 1998-10-09 | 2003-07-08 | National Semiconductor Corporation | Dynamic replacement technique in a shared cache |
US6286082B1 (en) * | 1999-04-19 | 2001-09-04 | Sun Mocrosystems, Inc. | Apparatus and method to prevent overwriting of modified cache entries prior to write back |
US6438655B1 (en) * | 1999-04-20 | 2002-08-20 | Lucent Technologies Inc. | Method and memory cache for cache locking on bank-by-bank basis |
US6412043B1 (en) * | 1999-10-01 | 2002-06-25 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US6430655B1 (en) * | 2000-01-31 | 2002-08-06 | Mips Technologies, Inc. | Scratchpad RAM memory accessible in parallel to a primary cache |
-
2000
- 2000-10-17 GB GB0025468A patent/GB2368150B/en not_active Expired - Lifetime
-
2001
- 2001-09-20 US US09/956,238 patent/US6671779B2/en not_active Expired - Lifetime
- 2001-10-16 JP JP2001317951A patent/JP3917839B2/ja not_active Expired - Lifetime
-
2003
- 2003-08-07 US US10/635,684 patent/US6954828B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6954828B2 (en) | 2005-10-11 |
US20020046326A1 (en) | 2002-04-18 |
JP2002163151A (ja) | 2002-06-07 |
GB0025468D0 (en) | 2000-11-29 |
GB2368150A (en) | 2002-04-24 |
US6671779B2 (en) | 2003-12-30 |
US20040030836A1 (en) | 2004-02-12 |
GB2368150B (en) | 2005-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3917839B2 (ja) | データ処理装置及びデータ処理装置におけるロックダウン・コントローラ及びデータ値をロックする方法 | |
US5860126A (en) | Controlling shared memory access ordering in a multi-processing system using an acquire/release consistency model | |
RU2212704C2 (ru) | Структура совместно используемого кэша для временных и невременных команд | |
KR940011668B1 (ko) | 페이지 메모리 관리 장치 | |
JP4298800B2 (ja) | キャッシュメモリにおけるプリフェッチ管理 | |
US6401192B1 (en) | Apparatus for software initiated prefetch and method therefor | |
US5634027A (en) | Cache memory system for multiple processors with collectively arranged cache tag memories | |
CA1080365A (en) | Data security system employing automatic time stamping mechanism | |
US6782452B2 (en) | Apparatus and method for processing data using a merging cache line fill to allow access to cache entries before a line fill is completed | |
US6065099A (en) | System and method for updating the data stored in a cache memory attached to an input/output system | |
JPH02228745A (ja) | 入出力キヤツシユ | |
EP0438960B1 (en) | Fast store-through cache memory | |
US5471602A (en) | System and method of scoreboarding individual cache line segments | |
EP0533427B1 (en) | Computer memory control system | |
US5287482A (en) | Input/output cache | |
EP1769365A2 (en) | Disable write back on atomic reserved line in a small cache system | |
US5822764A (en) | Method and circuit for efficiently replacing invalid locked portions of a cache with valid data | |
US7552285B2 (en) | Line fill techniques | |
US5920889A (en) | Apparatus and method for write miss processing in a copy-back data cache with an allocating load buffer and a non-allocating store buffer | |
KR20010102441A (ko) | 프로세서가 대기되는 동안 개시된 병렬 판독 및 직렬판독을 이용하는 세트 연관 캐시 관리 방법 | |
US5781922A (en) | Page boundary caches | |
JPH1055276A (ja) | 多重レベル分岐予測方法および装置 | |
JP2005512192A (ja) | キャッシュメモリをメインメモリに同期させる方法 | |
US6981103B2 (en) | Cache memory control apparatus and processor | |
EP0380861B1 (en) | Improved data consistency between cache memories and the main memory in a multi-processor computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060213 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060411 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060710 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060713 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061011 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061020 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070122 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070202 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070209 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3917839 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100216 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110216 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140216 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |