(57)【要約】犠牲キャッシュモードで作動する上位レベルキャッシュと下位レベルキャッシュとを備えたシステムが開示される。犠牲キャッシュは、最長時間未使用のキャッシュロケーションとして一番最近に読み出されたキャッシュロケーションを識別する、一番最近に使用された制御モジュールを含む。
2008530657.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュロケーションにデータが書き込まれたことに応答して前記キャッシュロケーションを一番最近に使用されたキャッシュロケーションとして識別するステップ（３２８）と、
前記キャッシュロケーションからデータが読み出されたことに応答して、前記キャッシュロケーションを最長時間未使用のキャッシュロケーションとして識別するステップ（３２４）と、を含む方法。
【請求項２】
前記第１キャッシュは犠牲キャッシュ（１３０）である、請求項１記載の方法。
【請求項３】
リクエストした第１情報が、第１キャッシュの第１キャッシュ行の第１ウェイに関連づけられる前記キャッシュロケーションに記録されていると判断するステップ（３１１）、
前記第１キャッシュロケーションからリクエストした情報の取り出しを促すステップ（３１２）、
前記リクエストした第１の情報の取り出しを促すステップに応答して、前記第１のキャッシュロケーションを最長時間未使用ロケーションとして識別するステップ（３１３）、を含む方法。
【請求項４】
前記第１キャッシュは犠牲キャッシュ（１３０）である、請求項３記載の方法。
【請求項５】
前記第１キャッシュはレベル２犠牲キャッシュ（１３０）である、請求項４記載の方法。
【請求項６】
前記リクエストした情報は第２キャッシュで利用できないと判断するステップをさらに含む、請求項３記載の方法。
【請求項７】
前記リクエストした情報が利用できないと判断するステップはさらに、前記リクエストした第１情報の取り出しを促す前に前記リクエストは利用できないと判断するステップを含む、請求項６記載の方法。
【請求項８】
中央処理ユニット（１１０）から前記リクエストした第１の情報に対するリクエストを受信するステップをさらに含む、請求項７記載の方法。
【請求項９】
キャッシュデータ（１１０）にアクセスするバスポートを含むデータプロセッサと、
前記データプロセッサの前記バスポートに接続された第１バスポートと第２バスポートを含む第１キャッシュ（１２０）と、
前記データプロセッサ（１３０）の前記第２バスポートに接続されたバスポートを含む第２キャッシュと、を備えたシステムであって、
前記第２キャッシュは、前記データプロセッサにこの第２キャッシュを通じてデータを供給するためのものであり、かつ、前記第２キャッシュは、一番最近に読み出されたキャッシュロケーションを最長時間未使用のキャッシュロケーションと識別するための最近使用制御モジュール（１６６）を含む、システム。
【請求項１０】
前記最近使用制御モジュールはさらに、一番最近に書き込みされたキャッシュロケーションを、一番最近に使用されたキャッシュロケーションとして識別する、請求項９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
概して、本開示はメモリシステムに関し、より詳細には、キャッシュメモリを用いたシステムに関する。
【背景技術】
【０００２】
犠牲キャッシュ(victim cache)を用いたシステムは、上位レベルキャッシュで上書きされたキャッシュラインを、下位レベルの犠牲キャッシュで記録されるよう転送することにより、書き込みモードで動作する。読み出し動作においては、リクエストされたデータは、キャッシュヒットにより示される、リクエストされたデータが犠牲キャッシュのラインに残っていることに応答して、犠牲キャッシュから上位レベルキャッシュへ転送される。
読み出し動作の一環として、犠牲キャッシュからのキャッシュラインの読み出しを無効にする書き込みが生じる。読み出されたキャッシュラインを無効にすることで、キャッシュコントローラは、このキャッシュラインが次の書き込み動作に利用できるものとして識別する。
【発明を実施するための最良の形態】
【０００３】
本開示は添付の図面を参照することでさらに理解することができ、その様々な特徴および利点は当業者によって明らかにされる。
【０００４】
なお、異なる図面においても、同様の、あるいは同一のアイテムに対しては同じ参照記号を使用する。
【０００５】
本開示の特定の実施形態に係る犠牲キャッシュシステムが開示されている。一実施形態では、レベル２（Ｌ２)キャッシュがレベル１（Ｌ１)キャッシュから出されたデータを記録する犠牲キャッシュになるように、Ｌ１キャッシュとＬ２キャッシュとが協働する。本開示の特定の実施形態によれば、データがＬ１キャッシュからＬ２キャッシュへ書き込まれるときに、書き込まれる側のキャッシュラインはそのキャッシュ行において一番最近に使用された（ＭＲＵ:Most Recently Used）キャッシュラインとして、ＭＲＵアレイにおいて識別される。
【０００６】
しかし、データが犠牲キャッシュに読み出されると、その結果として、犠牲キャッシュから読み出されたキャッシュラインは、そのキャッシュ行において最長時間未使用の（ＬＲＵ)キャッシュラインとして、ＭＲＵアレイにおいて識別される。キャッシュから読み出されたばかりのキャッシュラインを、その行で最長時間未使用のラインと識別することは、タグアレイにおけるラインを無効にすることと同様の結果が得られる。その理由は、一番最近に読み出されたキャッシュラインは、キャッシュ行の他のいずれのバリッドライン（有効ライン）よりも先に上書きされることになるからである。
【０００７】
本文で使用している用語である、「行」あるいは「キャッシュ行」は、現在のアドレスのインデックス部分（図１のＡ（インデックス）参照のこと）に基づいて選択される一連のキャッシュラインのことを言う。例えば、参照番号１４１、１４２、および１４３は、各々が４つのキャッシュラインを有するキャッシュ行を表す。本明細書のこのような具体的な実施形態およびその他の具体的な実施形態は本文の図１から図７を参照することでより理解することができる。
【０００８】
図１は、本願の特定の実施形態に係るシステム１００を示す。システム１００は、リクエスティングデバイス１１０、レベル１キャッシュ１２０、およびレベル２犠牲キャッシュ１３０を含む。システム１００は、システムオンチップ（ＳＯＣ）システム、もしくはマルチコンポーネントシステムを示し得る。マルチコンポーネントシステムの場合、デバイス１１０、キャッシュ１２０、およびキャッシュ１３０の一部は別の半導体基板上にあってもよい。一実施形態では、デバイス１１０およびキャッシュ１２０は共通の半導体基板上にあり、一方、キャッシュ１３０は、その一部を別の半導体基板に製造してもよく、あるいは、別の半導体基板には何ら製造されないようにしてもよい。システム１００が複数のコンポーネントを含む場合、このようなコンポーネントは、プリント基板、マルチチップモジュール、あるいはコンポーネントをサポートし相互接続できるその他の基板を使用して相互接続され得る。
【０００９】
動作においては、リクエスティングデバイス１１０は、Ｌ１キャッシュ１２０のバスポートに電気的に接続されたバスポートを有する。特定の実施形態では、このリクエスティングデバイス１１０はマイクロコントローラの中央処理ユニットであり得る。データアクセス動作においては、リクエスティングデバイス１１０は、情報が読み出される（受信される）あるいは書き込まれる（転送される）ようにリクエストを出す。読み出し動作あるいは書き込み動作のいずれにおいても、キャッシュ１２０および１３０にデータが書き込まれることになる。
【００１０】
キャッシュモジュール１２０は、キャッシュモジュール１２０でヒット（キャッシュヒット）した場合、リクエスティングデバイス１１０によってリクエストされるデータを供給することになる。キャッシュモジュール１２０でキャッシュミスが発生した場合、つまり、リクエストしたデータが存在しなければ、データは、犠牲キャッシュ１３０から、あるいはシステムメモリなどの別のメモリ位置（図示せず）からキャッシュモジュール１２０に書き込まれることになる。例えば、リクエストしたデータがキャッシュ１２０にもキャッシュ１３０にも存在しなければ、データは別のメモリ位置から受けとられることになる。別のメモリロケーションからのデータを受信したことに応答して、キャッシュ１２０のキャッシュラインにおけるデータを上書きしなければならない場合、上書きされるデータはまずＬ１キャッシュ１２０から出され、犠牲キャッシュ１３０に書き込まれて記録される。犠牲キャッシュ１３０にデータが書き込まれると、犠牲キャッシュ１３０は、Ｌ１キャッシュから出されたデータを受けたキャッシュラインを、一番最近に使用されたキャッシュラインとして識別する。
【００１１】
リクエスティングデバイス１１０によってリクエストされたデータが、外部メモリやＬ１キャッシュ１２０ではなく、犠牲キャッシュ１３０でキャッシュヒットすると、リクエストされたデータは犠牲キャッシュ１３０からＬ１キャッシュ１２０へと送られて記録される。この犠牲キャッシュ１３０のキャッシュラインを読み出すことで、読み出されたキャッシュラインは最長時間未使用のラインとして識別される。
【００１２】
犠牲キャッシュ１３０は、メモリアレイ１４０、タグ／バリッドビットアレイ１３５、キャッシュタグコントロール部１６５、キャッシュヒットモジュール１５５、最近使用制御モジュール１６６（ＭＲＵモジュール）、ＭＲＵアレイ１７０、および、ウェイ選択モジュール部１５０を含む。
【００１３】
バス１２５はＬ１キャッシュ１２０を犠牲キャッシュ１３０に接続し、タグ部分やインデックス部分を含むアドレス情報をＬ１キャッシュ１２０から犠牲キャッシュ１３０へと送る。更なるデータおよび制御バスが存在することは明らかであることから、以下の議論のためにアドレスバスだけを例示する。バス１２５の部位は、メモリアレイ１３５の特定のキャッシュラインセットを識別するために使用されるアドレス情報を送信するもので、Ａ（インデックス）のラベルが付されており、キャッシュタグコントロール１６５に接続されている。キャッシュ行の特定のウェイを選択するために使用されるアドレス情報にはＡ(タグ）のラベルが付されており、キャッシュヒットモジュール部１５５に送られる。メモリアレイ部１４０はキャッシュ行１４１〜１４４を含み、さらに、ウェイ１４６〜１４９の４つのウェイを含む。ウェイ選択モジュール１５０はキャッシュメモリアレイ１４０に接続され、犠牲キャッシュ１３０でのヒットに応答して、Ｌ１キャッシュ１２０に供給されるメモリアレイ１４０のウェイの１つに関連づけられるデータを選択する信号を受信する。
【００１４】
キャッシュタグコントローラ１６５は、キャッシュメモリアレイ１４０のキャッシュ行の１つを選択するとともに、このキャッシュ行に関連付けられるアレイ１３５のタグとバリッドビットとを選択する。特定のアドレスの受信に応答して、現在のアドレスのタグ、Ａ(タグ）がキャッシュタグ／バリッドビットアレイ１３５内に記録されることが決定されると、信号がキャッシュヒットモジュール１５５からアサートされてＭＲＵコントロール１６６とウェイ選択モジュール１５０とに送られ、これにより、データが犠牲キャッシュ１３０からＬ１キャッシュ１２０に送られ、ＭＲＵレジスタがアップデートされる。
【００１５】
書き込み動作においては、ＭＲＵ制御モジュール１６６は、書き込まれるラインがその行内で一番最近に使用されたラインであることを示すようにＭＲＵアレイ１７０をアップデートする。
【００１６】
読み出し動作においては、ＭＲＵ制御モジュール１６６は、読み出されたラインがその行内で最長時間未使用のラインであることを示すようにＭＲＵアレイ１７０をアップデートする。実際にはそのラインが一番最近にアクセスされたものである場合に、この読み出されたラインを最長時間未使用のラインであるとして示すことで、この読み出されたばかりのラインが次の書き込み動作中に上書きされる可能性が最も高いものとされ、その一方で、上書きされる前においては最近に読み出されたデータが利用できる状態が維持される。このことは、これまでのシステム、つまり、一旦キャッシュラインデータが読み出されるとラインに対する犠牲キャッシュタグを無効にすることで、その後に元のデータが犠牲キャッシュから必要とされた場合、例えば、キャッシュラインの元の読み出しを中止する必要がある場合に、キャッシュラインの次のデータを読み出しさせないようなシステム、よりも有益である。
【００１７】
また、この開示されたシステムを使用することで、キャッシュラインを無効にするためのタグ／バリッドアレイ１３５への別々の書き込みが必要とされないために、バンド幅を改善することができる。このことは、図２を参照することでさらに理解することができる。
【００１８】
図２に、従来の犠牲キャッシュへの読込みと、本実施形態における犠牲キャッシュ１３０への読込みとの各タイミング図を示す。信号２１１は従来のシステムにおける犠牲キャッシュのタグ／バリッドビットへのアクセスを示す。また、信号２１２は、従来のシステムのＭＲＵアレイのＭＲＵインジケータへのアクセスを示す。具体的には、従来の犠牲アレイへの読み出しの第１サイクル（Ｃ１）中、選択されたキャッシュ行のタグおよびインバリッドビットは、信号２１１のパルスＲＤ１に示されるように読み出される。同じサイクルにおいて、アクセスされた行に対するＭＲＵインジケータは、信号２１２のパルスＲＤ１およびＷ１に示すように読み出しと書き込みがなされる。インバリッドビットは犠牲キャッシュに記録されたデータにアクセスするためのスピードパス(speed path)にあるので、また、タグ／インバリッドアレイ１３５はＭＲＵアレイよりも大きいので、同じサイクルでアレイ１３５のインバリッドビットにライトバックするのは一般には実用的ではない。代わりにバリッドビットが書き込まれ、キャッシュ行内の特定のラインのデータが同じ読み出し動作の第２サイクル中に無効にされることを示すようする。犠牲キャッシュは第３サイクル（Ｃ３）まで次の読み出しをすることができない。
【００１９】
信号２１３は、開示されたシステムのタグのタグ／バリッドビットへのアクセスを示す。信号２１４はＭＲＵアレイのＭＲＵインジケータへのアクセスを示す。具体的には、選択されたキャッシュ行のタグおよびインバリッドビットは、信号２１３のパルスＲＤ１により示されるＣ１中に同時に読み出される。同じサイクルにおいて、アクセスされた行に対するＭＲＵインジケータは、信号２１４パルスＲ１およびＷ１に示すように読み出しと書き込みとがなされる。ＭＲＵアレイはＣ１中にライトバックされるので、サイクルＣ２において第２の読み出し動作が行われ、これにより、犠牲キャッシュ１３０の読み出しバンド幅が増加する。
【００２０】
図３は、犠牲キャッシュ１３０への読み出しおよび書き込み動作がキャッシュ行のＭＲＵおよびバリッドビットにどのように影響を及ぼすかを示すことにより、犠牲キャッシュ１３０を理解しやすいものとする。具体的には、図３は、図１の犠牲キャッシュ１３０の行および列に対応する行および列を有するアレイ３３７を示す。例えば、行２４１〜２４４はキャッシュ行１４１〜１４４に対応し、列２４６〜２４９はウェイ１４６〜１４９に対応する。アレイ３３７の各キャッシュラインは、“ｉ”か“ｖ”の文字を含む。文字“ｉ”は、キャッシュラインに関連付けられたデータが無効であることを示し、文字“ｖ”は、キャッシュラインに関連付けられたデータが有効であることを示す。有効データを含むとされたラインはさらに１〜４の数字を含む。これらの数字はラインの一番最近の使用状況を示すもので、１は一番最近に使用されたデータを示し、４は最長時間未使用のデータを示す。
【００２１】
図３のライン２４２からライン２４２Ａまでのパスは、行２４１、列２４９に関連付けられるラインのデータの読み出しを示し、ライン２４２からライン２４２Ｂまでのパスは、行２４２、列２４９に関連づけられるキャッシュラインのデータの書き込みを示す。
【００２２】
行１４１、ウェイ１４９への読込み動作においては、最近読込まれたラインが値４を含み、これによりこのラインが最長時間未使用ラインと識別されるように、キャッシュ行１４２に関連づけられるＭＲＵ値が変更される。行１４２、ウェイ１４９への書き込み動作においては、最近書き込まれたラインが値１を含み、これによりこのラインが一番最近に使用されたラインとされるように、キャッシュ行１４２に関連付けられるＭＲＵ値が変更される。
【００２３】
特定のキャッシュラインの使用状況は、様々な方法で記録することができる。例えば、各キャッシュラインを十分な大きさのメモリロケーションと関連付け、現在の使用の順位を示すことができる。４つのキャッシュラインを有するキャッシュ行に関しては、これには４つの、２ビットのロケーションが必要となる。他の形態では、４つのキャッシュラインを有するキャッシュ行は、３ビットだけを使用した擬似的ランキング法（pseudo-ranking schemeを使用することができた。このような手法では、２つの重ならないキャッシュラインセットが識別される。重ならないキャッシュラインセットの各々は４つのキャッシュラインのうちの２つを示す。この擬似的ランキング法を実現するために使用される３ビットのうちの第１のビットは、この第１セットが一番最近に使用されたキャッシュラインを含むことを示すようにアサートされ、また、第２セットが一番最近に使用されたキャッシュラインを含むことを示すようにネゲートされる。擬似的ランキング法における残りの２ビットは、対応するセット内のどのキャッシュラインが最も最近アクセスされたものかを示すようにアサートあるいはネゲートされる。この手法により、行内で一番最近に使用されたキャッシュラインと最長時間未使用のキャッシュラインとを識別できることが明らかであろう。
【００２４】
図４に、本実施形態に係る方法をフロー図形式で示す。ステップ３１１では、読み出し動作の一環として、リクエストした第１の情報が犠牲キャッシュ内の、例えばキャッシュラインなどの第１キャッシュロケーションに記録されている、つまり、ヒットしたと判断される。
【００２５】
ステップ３１２では、ステップ３１１でヒットしたことに応答して、第１キャッシュロケーションからリクエストした情報の取り出しが促される。図１を参照すると、リクエストされた情報は、キャッシュタグコントロール１６５のキャッシュ行選択モジュールにより選択されたキャッシュ行と、タグのヒットに応答してキャッシュヒットモジュール１５５から送られた選択信号に基づいて選択される。
【００２６】
ステップ３１３では、ステップ３１１でヒットに応答して、リクエストされた情報がアクセスされたキャッシュロケーションは、読み出しに応答して、最長時間未使用のキャッシュロケーションとして識別されることになる。このようにして、データはアクセス可能なままにされているが、データは、次に情報をキャッシュタグロケーションに記録しなければならないときには上書きされることになる。
【００２７】
図５に、本開示のさらに別の実施形態を示す。ステップ３１２では、犠牲キャッシュからの情報に対する第１の読み出しリクエストが犠牲キャッシュに送られる。ここでは、情報は上位レベルのキャッシュに送られる。例えば、犠牲キャッシュシステムの一環として、データに対する第１のリクエストは上位レベルキャッシュに対してなされ、第２のリクエストは犠牲キャッシュに送られる。この第２リクエストは、上位レベルキャッシュの一部とされるメモリコントロールによってなされてもよく、あるいは、上位レベルキャッシュとは別であるとされるメモリコントロールによってなされてもよい。図１を参照すると、Ｌ１キャッシュ１２０やメモリコントローラ（図示せず）は、Ｌ２キャッシュ１３０へ読込みリクエストを送ることができた。
【００２８】
ステップ３２２では、第１の情報が犠牲キャッシュから第１キャッシュにおいて受けとられる。例えば、図１を参照すると、犠牲キャッシュなどのＬ２キャッシュ１３０は、選択されると、データをＬ１キャッシュ１２０へと送る。
【００２９】
ステップ３２３では、犠牲キャッシュにインジケータをストアし、犠牲キャッシュにおいて第１の情報の上書きを促す。Ｌ２犠牲キャッシュ１３０から情報の読み出しが発生すると、読み出されたばかりのデータは情報をリクエストしたＬ１キャッシュ１２０に残っていると強く仮定される。よって、最長時間未使用のインジケータなどのインジケータを、それまで第１の情報を記録したロケーションに適用することで、その後におけるデータの上書きを促すことができる。
【００３０】
ステップ３２４では、同じ情報に対する第２の読み出しリクエストがＬ２キャッシュに送られる。このリクエストを受信すると、ステップ３２５で示すように、第１の情報が犠牲キャッシュによって上書きされる前に、情報が第１キャッシュにおいて犠牲キャッシュから受信され得る。このことは、犠牲キャッシュロケーションが読み出されても、そのデータは無効にされないという点で以前の方法よりも改善したことを示す。
【００３１】
図６に、本開示による方法をブロック図形式で示す。ステップ３２６では、上位レベルキャッシュによって促された、第１回目の第１の読み出しみリクエストが、犠牲キャッシュに対して最初に発生する。上位レベルキャッシュは、犠牲キャッシュへの読み出しリクエストを促すことから、犠牲キャッシュの読み出しが実際に終了したことは、リクエストされたデータが上位レベルキャッシュに残っているかどうかに基づいて予測される。ステップ３２７では、上位レベルキャッシュによって促された、第２回目の第２の読み出しリクエストが発生し、従って、第１の読み出しが生じた時間から第２の読み出しが生じた時間迄の期間においてバリッドインジケータの変更は行われていない。より具体的には、タグ／インバリッドレジスタへの書き込みに対して干渉することによって第１の読み出しによって読み出されたデータが無効にされることはない。
【００３２】
図７は、本明細書の特定の実施形態に係る方法をフロー図形式で示す。犠牲キャッシュのキャッシュロケーションに書き込まれたデータに応答してステップ３２８が実行され、これにより、キャッシュロケーションは一番最近に使用されたキャッシュロケーションとして識別される。犠牲キャッシュのキャッシュロケーションから読み出されたデータに応答してステップ３２９が実行され、これにより、キャッシュロケーションは最長時間未使用のキャッシュロケーションとして識別される。
【００３３】
これまでの詳細な記載では、記載の一部を形成している図面を参照してきた。図面においては、本発明が実行され得る特定の実施形態が示されている。当業者が本発明を実施できるように、これらの実施形態およびその特定の変形を十分に詳しく記載している。例えば、装置１１０と装置１２０、および装置１２０と装置１３０を接続する、別のアドレス接続が示されているが、この３つの装置によって共通の一連のアドレス接続が共有され得ることは理解されるであろう。当然、その他の適切な実施形態を利用してもよい。加えて、図面に示す機能部分を本発明の精神や範囲から逸れることなく複数の方法に組み合わせてもよいし分割してもよいことは明らかであろう。
【００３４】
例えば、犠牲キャッシュ１３０の制御部分を、Ｌ１キャッシュ１２０とリクエスティングデバイスがメモリアレイ１３５から離れた状態で、共通の基板上に形成してもよい。このような実施形態では、各キャッシュラインに関連づけられるバリッドビットは、制御部分の一部として、あるいはメモリアレイ１３５の一部として記録され得る。さらに、記載したキャッシュ領域に記録されたデータは、命令タイプのデータもしくはデータタイプのデータ、つまり、命令ではないデータであってもよい。したがって、これまでの詳細な説明は本文に記載される特定の形式に限定するものではなく、むしろ、添付の請求項の精神および範囲内に正当に含まれるこのような変形、修正、および等価物を含むものである。
【図面の簡単な説明】
【００３５】
【図１】本発明の特定の実施形態に係るキャッシュメモリを含むシステムのブロック図。
【図２】本実施形態と従来技術とを対比したタイミング図。
【図３】本発明の特定の実施形態に係る共通のキャッシュ行においての読み出しヒットと書き込みヒットの結果を示したブロック図。
【図４】本実施形態に係る方法のフロー図。
【図５】本実施形態に係る方法のフロー図。
【図６】本実施形態に係る方法のフロー図。
【図７】本実施形態に係る方法のフロー図。
【図１】
2008530657.tif 000003
【図２】
2008530657.tif 000004
【図３】
2008530657.tif 000005
【図４】
2008530657.tif 000006
【図５】
2008530657.tif 000007
【図６】
2008530657.tif 000008
【図７】
2008530657.tif 000009
【国際調査報告】
2008530657.tif 000010
2008530657.tif 000011
2008530657.tif 000012