(57)【要約】  記憶回路（６４）は、行および列に配列された記憶位置（３４）のアレイ（３２）と、アレイ（３２）のアクティブ行（４６）の対応する列にある記憶位置からの情報を各々記憶する複数のエントリ（６８）を含む行バッファ（３６）と、タグ値（７２）を指定するタグマッチングコマンドに応答してタグ値を、行バッファ（３６）の２つ以上のエントリ（６８）のサブセットの各々に記憶された情報と比較する比較回路（７０）とを備える。比較回路（７０）は、存在する場合、エントリのサブセットのうちいずれがタグ値と一致する情報を記憶する一致エントリであるかを識別する。これにより、ＤＲＡＭなどのメモリ技術をセットアソシアティブキャッシュとしてより効率的に使用することが可能になる。
2019536165.tif 000002
【特許請求の範囲】
【請求項１】
記憶回路であって、
行および列に配列された記憶位置のアレイと、
前記アレイのアクティブ行の対応する列にある記憶位置からの情報を各々記憶する複数のエントリを含む行バッファと、
タグ値を指定するタグマッチングコマンドに応答して、前記タグ値を前記行バッファのエントリのサブセットの各々に記憶された情報と比較し、存在する場合、前記エントリのサブセットのいずれが、前記タグ値に一致する情報を記憶する一致エントリであるかを識別する比較回路であって、前記サブセットは前記行バッファの２つ以上のエントリを含む、比較回路と
を備える、記憶回路。
【請求項２】
前記比較回路は複数の比較を並行して実行するように構成されており、各比較は前記タグ値を前記行バッファの前記エントリのサブセットのうちの対応する１つの中の情報と比較する、請求項１に記載の記憶回路。
【請求項３】
前記行バッファの前記複数のエントリのうちのいずれのエントリが前記エントリのサブセット内にあるかを識別する構成情報を記憶するための構成記憶要素を備える、請求項１および２のいずれか一項に記載の記憶回路。
【請求項４】
前記タグマッチングコマンドに応答して前記エントリのサブセットのうちの１つが前記一致エントリとして識別されるヒット条件に応答して、前記行バッファのいずれのエントリが前記一致エントリであるかに応じて選択された目標記憶位置に記憶された情報の読み取りまたは書き込みのために、読み取りまたは書き込み動作をトリガするように構成されている制御回路を備える、請求項１から３のいずれか一項に記載の記憶回路。
【請求項５】
前記目標記憶位置は、前記行バッファの前記一致エントリに対応する前記記憶位置と同じアレイ行内の別の記憶位置である、請求項４に記載の記憶回路。
【請求項６】
前記記憶回路は複数のバンクを備え、各バンクは前記アレイ、前記行バッファ、および前記比較回路を備え、
前記目標記憶位置は、前記行バッファの前記一致エントリに対応する前記記憶位置を含むバンクとは異なるバンク内の記憶位置である、請求項４に記載の記憶回路。
【請求項７】
前記記憶回路は複数のバンクを含み、各バンクは前記アレイ、前記行バッファ、および前記比較回路を含み、
書き込みコマンドに応答して、前記複数のバンクのうちの１つの中の記憶位置にデータ値を書き込み、前記複数のバンクのうちの別のバンクの中の記憶位置に対応するタグ値を書き込む制御回路を備える、請求項１から４のいずれか一項に記載の記憶回路。
【請求項８】
前記タグマッチングコマンドに応答して前記エントリのサブセットのうちの１つが前記一致エントリとして識別されるヒット条件に応答して、前記比較回路は、前記行バッファのいずれのエントリが前記一致エントリであるかの指示を所定の記憶要素に記憶するように構成されている、請求項１から７のいずれか一項に記載の記憶回路。
【請求項９】
先行ヒット書き込みコマンドに応答して、前記所定の記憶要素によって識別された前記行バッファの前記エントリと関連付けられる前記記憶位置に情報を書き込むための書き込み動作をトリガする制御回路を備える、請求項８に記載の記憶回路。
【請求項１０】
前記タグマッチングコマンドに応答して前記エントリのサブセットのうちの１つが前記一致エントリとして識別されるヒット条件に応答して、前記行バッファのいずれのエントリが前記一致エントリであるかに基づいて選択される記憶位置内のステータス情報を更新する制御回路を備える、請求項１から９のいずれか一項に記載の記憶回路。
【請求項１１】
前記タグマッチングコマンドに応答して、前記比較回路は、前記行バッファの前記エントリのサブセットのいずれも前記タグ値と一致する情報を記憶していないときにミス指示を返すように構成される、請求項１から１０のいずれか一項に記載の記憶回路。
【請求項１２】
各記憶位置は、エラー検出符号と関連付けられる情報を記憶するように構成されており、
前記ミス指示は、無効なエラー検出符号と関連付けられる所定の情報パターンを含む、請求項１１に記載の記憶回路。
【請求項１３】
犠牲読み取りコマンドに応答して、前記行バッファに記憶されたキャッシュ置換ポリシ情報に応じて選択された前記行バッファの犠牲エントリからデータを読み取り、前記犠牲エントリと関連付けられる記憶位置からのデータを無効にする制御回路を備える、請求項１から１２のいずれか一項に記載の記憶回路。
【請求項１４】
前記犠牲読み取りコマンドに応答して、前記制御回路は、前記行バッファのいずれのエントリが前記犠牲エントリであるかの指示を所定の記憶要素に記憶するように構成されている、請求項１３に記載の記憶回路。
【請求項１５】
先行ヒット書き込みコマンドに応答して、前記所定の記憶要素によって識別された前記行バッファの前記エントリと関連付けられる前記記憶位置に情報を書き込むための書き込み動作をトリガする制御回路を備える、請求項１４に記載の記憶回路。
【請求項１６】
タグ収集コマンドに応答して、前記行バッファの前記エントリのサブセットのそれぞれから情報を読み取るための読み取り動作をトリガする制御回路を備える、請求項１から１５のいずれか一項に記載の記憶回路。
【請求項１７】
前記記憶位置はＤＲＡＭ記憶位置を含む、請求項１から１６のいずれか一項に記載の記憶回路。
【請求項１８】
請求項１から１７のいずれか一項に記載の記憶回路と、
前記記憶回路に記憶されたキャッシュデータへのアクセスを制御するためのキャッシュコントローラと
を備える装置。
【請求項１９】
目標アドレスを指定するキャッシュアクセス要求に応答して、前記キャッシュコントローラおよび前記記憶回路のうちの１つが、前記目標アドレスの関数として決定されるタグ値を指定する前記タグマッチングコマンドをトリガするように構成されている、請求項１８に記載の装置。
【請求項２０】
前記タグマッチングコマンドに応答して前記エントリのサブセットのうちの１つが前記一致エントリとして識別されるヒット条件に応答して、前記記憶回路は、
前記一致エントリと関連付けられる前記記憶位置以外の目標記憶位置に対応するデータ値、および
前記記憶回路のいずれの記憶位置が前記目標記憶位置であるかを識別するための情報
のうちの少なくとも１つを前記キャッシュコントローラに出力するように構成されている、請求項１９に記載の装置。
【請求項２１】
記憶回路であって、
行および列に配列された、情報を記憶するための手段のアレイと、
前記アレイのアクティブ行からの情報をバッファリングするための手段であって、前記アレイのアクティブ行の対応する列にある記憶するための手段からの情報を各々記憶する複数のエントリを含む、バッファリングするための手段と、
タグ値を指定するタグマッチングコマンドに応答して、前記タグ値を、前記バッファリングするための手段のエントリのサブセットの各々に記憶された情報と比較し、存在する場合、前記エントリのサブセットのいずれが、前記タグ値に一致する情報を記憶する一致エントリであるかを識別する、比較するための手段であって、前記サブセットは前記バッファリングするための手段の２つ以上のエントリを含む、比較するための手段と、
を備える、記憶回路。
【請求項２２】
行および列に配列された記憶位置のアレイを備える記憶回路からの情報にアクセスするための方法であって、
前記アレイのアクティブ行内の記憶位置からの情報を、複数のエントリを含む行バッファに転送することであって、各エントリは、前記アクティブ行の対応する列にある記憶位置からの情報を記憶する、転送することと、
タグ値を指定するタグマッチングコマンドに応答して、前記タグ値を前記行バッファのエントリのサブセットの各々に記憶された情報と比較し、存在する場合、前記エントリのサブセットのいずれが、前記タグ値に一致する情報を記憶する一致エントリであるかを識別することであって、前記サブセットは前記行バッファの２つ以上のエントリを含む、比較し、識別することと、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は記憶回路の分野に関する。
【背景技術】
【０００２】
例えばＳＲＡＭ（スタティックランダムアクセスメモリ）、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）、ＰＲＡＭ（相変化ランダムアクセスメモリ）、ＭＲＡＭ（磁気抵抗ランダムアクセスメモリ）などを含む、データ処理システム用の記憶回路を実装するための様々な技術が利用可能である。ＤＲＡＭのようないくつかのタイプのメモリ技術は行および列に編成された記憶位置のアレイを提供し、所与の記憶位置へのアクセスはアレイの特定の行がアクティブにされ、その行の各位置からのデータが行バッファに転送されることを必要とする。行がアクティブになると、行バッファの内容を読み取りまたは更新することによって、行内の種々の位置に対する複数の読み取り／書き込みを実行することができる。行バッファへの任意の更新は、アレイ内の対応する記憶位置に伝播することができ、行がもはや不要になった場合は、プリチャージコマンドを使用してその行を閉じることができる。
【発明の概要】
【０００３】
少なくともいくつかの例は、記憶回路であって、
行および列に配列された記憶位置のアレイと、
アレイのアクティブ行の対応する列にある記憶位置からの情報を各々記憶する複数のエントリを含む行バッファと、
タグ値を指定するタグマッチングコマンドに応答して、タグ値を行バッファのエントリのサブセットの各々に記憶された情報と比較し、存在する場合、上記エントリのサブセットのいずれが、タグ値に一致する情報を記憶する一致エントリ（マッチングエントリ）であるかを識別する比較回路であって、上記サブセットは行バッファの２つ以上のエントリを含む、比較回路と、
を備える、記憶回路を提供する。
【０００４】
少なくともいくつかの例は、
上記の記憶回路と、
記憶回路に記憶されたキャッシュデータへのアクセスを制御するためのキャッシュコントローラと、
を備える装置を提供する。
【０００５】
少なくともいくつかの例は、記憶回路であって、
行および列に配列された、情報を記憶するための手段のアレイと、
アレイのアクティブ行からの情報をバッファリングするための手段であって、アレイのアクティブ行の対応する列にある記憶するための手段からの情報を各々記憶する複数のエントリを含む、バッファリングするための手段と、
タグ値を指定するタグマッチングコマンドに応答して、タグ値を、バッファリングするための手段のエントリのサブセットの各々に記憶された情報と比較し、存在する場合、上記エントリのサブセットのいずれが、タグ値に一致する情報を記憶する一致エントリであるかを識別する、比較するための手段であって、上記サブセットはバッファリングするための手段の２つ以上のエントリを含む、比較するための手段と、
を備える、記憶回路を提供する。
【０００６】
少なくともいくつかの例は、行および列に配列された記憶位置のアレイを備える記憶回路からの情報にアクセスするための方法であって、
アレイのアクティブ行内の記憶位置からの情報を、複数のエントリを含む行バッファに転送することであって、各エントリは、アクティブ行の対応する列にある記憶位置からの情報を記憶する、転送することと、
タグ値を指定するタグマッチングコマンドに応答して、タグ値を行バッファのエントリのサブセットの各々に記憶された情報と比較し、存在する場合、上記エントリのサブセットのいずれが、タグ値に一致する情報を記憶する一致エントリであるかを識別することであって、上記サブセットは行バッファの２つ以上のエントリを含む、比較し、識別することと、
を含む、方法を提供する。
【０００７】
本技術のさらなる態様、特徴および利点は、添付の図面と併せて読まれるべき以下の実施例の説明から明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】セットアソシアティブキャッシュに対するタグルックアップ動作の論理機能の一例を概略的に示す図である。
【図２】ＤＲＡＭベースの記憶アレイの一例を概略的に示す図である。
【図３】キャッシュコントローラが、ＤＲＡＭを使用して実装されたキャッシュ内で目標データを位置特定するための２つの代替的な手法のうちの１つを示す図である。
【図４】キャッシュコントローラが、ＤＲＡＭを使用して実装されたキャッシュ内で目標データを位置特定するための２つの代替的な手法のうちの１つを示す図である。
【図５】ＤＲＡＭがタグマッチングコマンドをサポートする、ＤＲＡＭがデータとその関連するタグ情報の両方を記憶する例を示す図である。
【図６】タグ値を行バッファのエントリのサブセットと比較するための比較回路を備える記憶回路の一例を示す図である。
【図７】記憶セルの行内でのタグおよびデータの配列の複数の異なる例を示す図である。
【図８】記憶セルの複数のバンクを含むデータ記憶回路の一例を示す図である。
【図９】タグ−データ対が異なるバンク間で分割される例を示す図である。
【図１０】アクティブ化コマンドを処理する方法を示す流れ図である。
【図１１】タグマッチングコマンドを処理する方法を示す流れ図である。
【図１２】エラー検出符号の使用を示す図である。
【図１３】先行ヒット書き込みコマンドを処理する方法を示す流れ図である。
【図１４】タグ収集コマンドを処理する方法を示す流れ図である。
【０００９】
記憶回路は、その行に対する読み取りまたは書き込み中に記憶位置のアクティブ行からの情報を一時的に記憶するための行バッファを有することができる。行バッファは複数のエントリを含み、各エントリはアクティブ行の対応する列にある記憶位置からの情報を記憶するためのものである。記憶回路には、タグ値を指定するタグマッチングコマンドに応答して、タグ値を行バッファのエントリのサブセット（少なくとも２つのエントリを含む）の各々に記憶された情報と比較し、存在する場合、上記エントリのサブセットのいずれがタグ値と一致する情報を記憶する一致エントリであるかを識別する比較回路を設けることができる。これにより、タグ値と比較するために各エントリが個別に外部回路に読み出されることを必要とすることなく、複数のタグを行バッファ内で直接比較することができるため、タグルックアップ動作がより高速に実行されることが可能になる。位置のセットが、複数の別個の読み取り動作を必要とすることなく、単一のタグマッチングコマンドに応答してそれらのタグをルックアップされ得るため、これは、記憶回路をセットアソシアティブキャッシュとしてより効率的に使用することができることを意味する。行バッファを使用する記憶技術は、代替的な記憶技術よりも所与の記憶容量に対して面積効率が高く、そのため、セットアソシアティブキャッシュとしてこのタイプの記憶回路をより効率的に使用することを可能にすることによってより大きいキャッシュがより少ない製造コストで製造されることを可能にすることができるため、これは有用である。
【００１０】
比較回路は複数の比較を並行して実行することができ、各比較はタグ値を行バッファの上記エントリのサブセットのうちの対応する１つの中の情報と比較する。したがって、複数のエントリのタグルックアップは、目標タグ値と比較するために各タグを個別に順次読み出すよりも高速にすることができる。
【００１１】
場合によっては、比較回路は、タグマッチングコマンドと関連付けられるタグ値を、行バッファのエントリのサブセット内の各エントリの内容全体と比較することができる。記憶回路がキャッシュとして使用されるとき、記憶位置は対になるように配分することができ、ここで各対は、キャッシュされたデータ値を記憶するための１つの位置と、対応するタグ値を記憶するための別の記憶位置とを含み、そのため、行バッファのエントリのサブセットは、データ値ではなく、タグ値を記憶するエントリとすることができる。一般に、タグ値は、対の他方の位置にあるデータ値のアドレスの一部を識別することができる。しかしながら、タグ値はまた、例えば、対応するデータ値がクリーンかダーティかを示すコヒーレンシステータス情報、またはキャッシュからのデータの追い出しを制御するための追い出し制御情報（例えば、最長時間未使用（ＬＲＵ）カウント、または記憶されているデータへの最近のアクセスパターンを追跡するための他の情報）など、データのキャッシングを制御するための他の制御情報を識別することもできる。したがって、いくつかの実施形態では、比較回路は、タグマッチングコマンドによって指定されたタグ値を、行バッファのエントリのサブセットの各エントリに記憶されている情報の一部だけと比較することができる。
【００１２】
比較回路を使用して比較されるエントリのサブセット内に行バッファのいずれのエントリがあるかを識別する構成情報を記憶するために構成記憶要素を提供することができる。これにより、比較回路は構成記憶要素から、行バッファ内のいずれのエントリを、データ値ではなくタグ値を記憶するように意図されているかを決定することができるため、記憶回路がキャッシュとして使用されているときにタグ値およびデータ値を記憶するために、記憶回路の物理記憶容量を異なる構成に割り当てることができる。例えば、構成情報は、所望の関連性、キャッシュラインサイズ、またはキャッシュによって使用されているタグサイズなどの制御情報を指定することができ、その情報からエントリのサブセットを比較回路によって決定することができる。代替的に、構成情報は、（例えば、対応するエントリをエントリのサブセットの一部と考えるべきか否かを各ビットが識別するビットマップを使用して）行バッファのいずれのエントリをタグ値と比較するかを明示的に識別してもよい。
【００１３】
タグマッチングコマンドに応答して上記エントリのサブセットのうちの１つが一致エントリとして識別されると（「ヒット条件」）、行バッファのいずれのエントリが一致エントリであるかに応じて選択された目標記憶位置に対応する情報の読み取りまたは書き込みのために、読み取りまたは書き込み動作をトリガすることができる。例えば、目標記憶位置は、ヒットが検出された記憶位置に記憶されているタグ値と関連付けられるデータ値を記憶する、対になった記憶位置であり得る。読み取り動作の場合、目標記憶位置から読み取られた情報は、タグマッチングコマンドへの応答として返すことができる。
【００１４】
場合によっては、目標記憶位置は、行バッファの上記一致エントリに対応する記憶位置と同じアレイ行内の別の記憶位置であり得る。この手法では、各タグ−データ対を記憶回路の同じ行内に割り当てることができ、それによって読み取り動作の制御をより単純にすることができる。
【００１５】
代替的に、目標記憶位置は、一致が検出された記憶位置とは異なる行にあってもよい。単一バンクの記憶位置を含む記憶回路を提供することは可能であるが、多くの場合、２バンク以上の記憶位置を設けることができ、各バンクは、上述したような行および列に配列された記憶位置のアレイと、行バッファと、比較回路とを備える。実際には、あるバンクのアクティブ行からの読み取りに続いて、最初のバンクの同じ行内で別の読み取りを実行するよりも、異なるバンクから情報を読み取る方が速くなる場合がある。したがって、マルチバンク実施形態において性能を向上させるために、データ−タグ対を記憶回路に割り当てるとき、データ値を１つのバンク内の記憶位置に書き込み、対応するタグ値を異なるバンク内の記憶位置に書き込むことが有用であり得る。したがって、タグマッチングコマンドを処理する際に、ヒット条件が識別されると、読み取り動作がトリガされる目標記憶位置は、行バッファの一致エントリに対応する記憶位置とは異なるバンク内にあり得る。
【００１６】
いくつかの例では、ヒット条件が識別されると、比較回路は、行バッファのいずれのエントリが上記一致エントリであるかの指示を所定の記憶要素に記憶することができる。記憶回路は、上記所定の記憶要素によって識別された行バッファのエントリと関連付けられる記憶位置に情報を書き込むための書き込み動作をトリガする、先行ヒット書き込みコマンドをサポートする制御回路を有することができる。多くの場合、キャッシュからデータ値を読み取った後、対応するタグ値の一部を更新することが望ましい可能性がある（例えば、上述のコヒーレンシステータスまたは追い出し制御情報を更新するために）。したがって、一致エントリを所定の記憶要素に記録することによって、キャッシュコントローラまたは他の外部コントローラがタグの正確な位置を知る必要なしに、またはタグルックアップ動作を繰り返す必要なしに、後続のタグ書き込みを実行することができる。
【００１７】
代替的に、コヒーレンシステータス情報またはキャッシュ置換ポリシ情報などのステータス情報の更新は、タグマッチングコマンド自体に応答して実行することができる。したがって、ヒット条件が存在し、かつ、タグマッチングコマンドに応答して一致エントリが識別されるとき、制御回路は、行バッファのいずれのエントリが一致エントリであるかに基づいて選択された記憶位置のステータス情報を更新し得る。通常、選択された記憶位置は、一致エントリ自体に対応する記憶アレイ内の位置とすることができるが、同じアクティブ行の別のエントリにも対応し得る。タグマッチングコマンドに応答したキャッシュヒットに関してキャッシュステータス情報を更新することによって、これは、ステータス情報を更新するためにキャッシュコントローラから記憶回路に別個の書き込みコマンドが提供される必要性を回避する。
【００１８】
タグマッチングコマンドに応答して、行バッファのエントリのサブセットのいずれもタグ値と一致する情報を記憶していない場合（「ミス条件」）、比較回路はミス指示を返すことができる。これをキャッシュコントローラに出力して、必要なデータが現在キャッシュに記憶されていないことを示すことができる。いくつかの場合において、ミス指示は、ヒットまたはミスがあったかを示す明示的な信号であり得る。しかしながら、これはヒット／ミス信号を他の回路に通信するために追加の出力ピンを設けることを必要とする可能性がある。
【００１９】
しかしながら、場合によっては、記憶回路に記憶されたデータは、エラー検出符号を使用することによってエラーから保護することができる。いくつかのタイプのエラー検出符号は、エラー（粒子衝突または他の単一のイベントの混乱によって引き起こされるビットフリップなど）を単に検出することを可能にするが訂正することはできない。例えば、パリティ符号またはチェックサムを使用して、ビットリップがいつ発生したかを識別できるが、いずれのビットがエラーであるかは識別できない。代替的に、エラー検出符号は、正しいデータ値を識別するために使用することができる何らかの冗長な情報を提供することによってエラーを訂正することも可能にするエラー訂正符号であり得る。エラー訂正符号は、例えば、畳み込み符号またはブロック符号であり得る。エラー検出符号は対応するデータ値とは別個の値でもあってもよく、または、代替的に、データはそこから元のデータ値とエラーがあるか否かを識別する情報の両方が決定され得る、単一のデータ値を提供するように符号化されてもよい。
【００２０】
エラー検出符号を使用する例では、タグマッチングコマンドに応答してミスが識別されると、ミス指示は無効なエラー検出符号と関連付けられる情報の所定のパターンを含むことができる。無効エラー検出符号は通常、対応するデータにエラーが発生したことを示すが、ミス指示を受信するキャッシュコントローラまたは他の回路は、データが所定のパターンを有するとき、無効エラー検出符号がエラーを示すものとしてではなく、タグルックアップがミスを識別したことを示すものとして解釈されるように構成することができる。これにより、読み取り動作に使用されるデータチャネルを使用してミス条件を知らせることができ、別個のヒット／ミス信号を通信するために追加のピンを設ける必要がなくなる。
【００２１】
記憶回路の制御回路はまた、犠牲読み取りコマンドに応答して、行バッファに記憶されたキャッシュ置換ポリシ情報に応じて選択された行バッファの犠牲エントリからデータを読み取り、上記犠牲エントリと関連付けられる記憶位置からのデータを無効にすることもできる。キャッシュミス時に、関連するセット内に無効な位置がない場合、データを追い出すための犠牲ブロックを見つけ出し、それをメモリからフェッチされることになる新しいデータと置き換える必要があり得る。いずれのエントリを犠牲エントリとして選択するかを識別することは、関連するセットからキャッシュ置換ポリシ情報（例えば、いずれのエントリが最長時間未使用であったかを示す情報）の読み取りを必要とし得る。置換ポリシ情報をキャッシュコントローラに読み出し、次にキャッシュコントローラが、犠牲エントリとして選択するエントリを決定して後続の読み値を発行するのではなく、制御回路は、記憶回路自体の中でローカルに置換ポリシ情報の分析をサポートし得る。例えば、置換ポリシが疑似最長時間未使用である場合、犠牲読み取りコマンドは記憶回路内の制御回路を制御して２分木を走査して最長時間未使用要素を見つけ、ブロックのデータを返すことができ、結果、これをメモリに書き戻して、ブロックを無効にすることができる。置換ポリシ情報の読み取り（および処理）と犠牲データの読み取りの両方を、１つのコマンドに応答して記憶回路内で行うことができるため、これによって少なくとも１つのコマンドを節約することができる。
【００２２】
犠牲記憶位置からの追い出し後、後続の書き込みコマンドを記憶回路に発行して、メモリからフェッチされたデータを犠牲記憶位置に書き込むことができる。その書き込みの処理を高速化するために、犠牲読み取りコマンドに応答して、制御回路は、行バッファのいずれのエントリが犠牲エントリであったかの指示を所定の記憶要素に記憶することができる。次に、前述のような先行ヒット書き込みコマンドを使用して、置換データを、所定の記憶要素によって識別されたエントリと関連付けられる記憶位置に書き込むことができる。これにより、犠牲エントリに置換データを書き込むときに、置換ポリシ情報を再度検討する必要がなくなる。
【００２３】
タグ収集コマンドを実行して、行バッファの上記エントリのサブセットの各々から情報を読み取るための読み取り動作を実行するように制御回路をトリガすることもできる。したがって、タグ収集コマンドに応答して、アクティブ行からのタグ情報を収集して、各タグを順次読み取るために別個の読み取り動作が必要とされる場合よりも速く戻すことができる。これは、例えば、キャッシュに新しいデータを割り当てるときにキャッシュコントローラがより適切な置換決定を下せるようにする場合に有益であり得る。記憶回路とキャッシュコントローラとの間のデータチャネルはアクティブ行内のすべてのタグ情報の合計サイズほど広くない場合があるため、タグ情報をチャンクにおいてキャッシュコントローラに転送するために、タグ収集コマンドに応答して複数のデータ転送が順次実行され得る。
【００２４】
上述した技術は、行バッファを使用する任意のメモリ技術に基づく記憶回路に使用することができる。しかしながら、それはＤＲＡＭベースの記憶回路に特に有用であり得る。ＤＲＡＭは比較的面積効率の良いメモリ技術であるが、一般にアクセスが比較的遅いため、セットアソシアティブキャッシュとして効果的に使用することは困難である。それゆえ、ＤＲＡＭは従来、メインメモリに使用されているがキャッシュのためには使用されていない。上述の比較回路を提供することによって、ＤＲＡＭはキャッシュを使用するのにより魅力的になり、より大きいキャッシュがより小さい回路面積で実施されることを可能にし、したがって、ＳＲＡＭのような代替物と比較して、より低い製造コストを実現することを可能にする。
【００２５】
装置（例えば、データ処理システム）は、上記の記憶回路と、記憶回路に記憶されたキャッシュデータへのアクセスを制御するためのキャッシュコントローラとを備えることができる。目標アドレスを指定するキャッシュアクセス要求に応答して、キャッシュコントローラおよび記憶回路のうちの１つが、上記目標アドレスの関数として決定されるタグ値を指定するタグマッチングコマンドを発行することができる。場合によっては、タグマッチングコマンドの生成はキャッシュコントローラにおいて行うことができ、次いでキャッシュコントローラが、行アドレスおよびタグ値を記憶回路に送信することができ、記憶回路は、タグ値を行バッファのエントリのサブセットと比較し、一致エントリへの読み取り／書き込みをトリガし、その後、必要なデータ、または、読み取りについてはミス指示、もしくは、書き込みについては書き込み確認応答信号を返すことができる。代替的に、キャッシュコントローラは、記憶回路にメモリアドレスを発行し、記憶回路は、次に内部で行アドレスおよびタグ値を復号し、次に上記と同様の方法でタグマッチングコマンドを処理することができる。タグマッチングコマンドに応答してヒットが識別されると、記憶回路は、一致エントリと関連付けられる記憶位置以外の目標記憶位置に対応するデータ値、および、記憶回路のいずれの記憶位置が目標記憶位置であるかを識別するための情報のうちの少なくとも１つをキャッシュコントローラに出力し得る。実際には、タグマッチングコマンドに加えて後続の読み取りコマンドが不要になるように、記憶回路がデータ値自体を出力する場合、パフォーマンスが速くなり得る。
【００２６】
図１は、セットアソシアティブキャッシュ２に対するタグルックアップ動作の論理的機能を示す。キャッシュ２は、タグ−データ対を各々含む複数のキャッシュエントリ４を有し、各対が、データ値６と、データ値に対応するメモリアドレスの一部を指定し、任意選択的にコヒーレンシステータス情報または追い出し制御情報のような他の情報を指定するタグ値８とを含む。キャッシュエントリ４は、各々が一定数のキャッシュエントリを含むセット１０に論理的に編成される（例えば、図１は４ウェイセットアソシアティブキャッシュ２を示し、そのため、各セット１０は４つのキャッシュエントリ４を含む）。各セット内の対応する位置にある位置のグループは、「ウェイ（ｗａｙ）」１２と呼ばれる。ウェイ０は各セット１０の第１のキャッシュエントリ４を含み、ウェイ１は各セット１０の第２のキャッシュエントリ４を含む、などである。
【００２７】
読み取り／書き込み動作が実行されると、必要なメモリアドレス１４が提供され、目標アドレスのインデックス部分１６（またはインデックス部分１６のハッシュ）が使用されて、いずれのセット１０にアクセスするかが選択され、目標アドレス１４のタグ部分１８が、インデックス付きセット１０の各エントリ４内のタグ値８と比較される。一致タグを含むウェイ１２に対してヒット信号がアサートされ、対応するデータ値６を、インデックス付きセット１０の一致するウェイ１２内のキャッシュエントリ４から読み出すことができる。目標アドレスのオフセット部分２０は、返されたデータ値６内の必要なデータの位置を識別することができる。
【００２８】
図１はセットアソシアティブキャッシュに必要な論理機能を示しているが、物理ハードウェア実装では、キャッシュに使用されるメモリ技術に応じてこれを様々な方法で実装することができる。ＳＲＡＭは、ＤＲＡＭなどの代替物と比較してアクセスが高速であり得るため、ＳＲＡＭがキャッシュに使用されることは比較的一般的である。しかしながら、比較的大きいキャッシュに対する要求がますます高まっており、ＳＲＡＭは比較的回路面積集約的であり得、ＳＲＡＭからより大きいキャッシュを構築することは費用がかかることになる。
【００２９】
ＤＲＡＭは、より大きい記憶構造に使用するためのより安価な技術を提供することができる。図２は、ＤＲＡＭベースの記憶回路３０の一例を示す。記憶回路３０は、行および列に配列された記憶位置３４のアレイ３２と、行バッファ３６と、列マルチプレクサ３８と、行デコーダ４０とを備える。ＤＲＡＭの場合、各記憶位置３４はビットセルのグループを含み、各ビットセルは、対応する記憶位置３４によって表される全体値の１ビットに対応する１または０を表すように選択的に充電または放電することができるキャパシタを含む。ＤＲＡＭ３０へのアクセスは２段階で行われる。第１に、行アドレス４２を指定するアクティブ化コマンドが発行される。行デコーダ４０が対応する行４６をアクティブにして、対応する行の各記憶位置３４に記憶されている情報を行バッファ３６に入れる。第２に、列アドレス４４が実際の読み取り／書き込みコマンドを伴い、これは、アクティブ行内の特定の列に対応する行バッファ３６のエントリを選択し、そのエントリから読み取られた情報を読み取りデータとして出力するか、または、書き込みコマンドと共に提供される書き込みデータに基づいて、そのエントリのデータを更新するように、列マルチプレクサ３８を制御する。書き込みについて、行バッファ３６を形成するセンス増幅器と対応するＤＲＡＭ記憶位置３４との間の接続が開放されたままであり得るため、行バッファ３６への書き込みは同様に対応する記憶位置３４に戻って伝播され得る。行バッファ３６とアクティブ行４６との間の接続を閉じるプリチャージコマンドを使用して行が閉じられる前に、同じアクティブ行内で複数の読み取り／書き込み動作が実行され得、アクティブ行４６の記憶位置が、行バッファ３６への任意の書き込みを反映するように更新されていることを保証し、行バッファ３６をリセットして別の行をアクティブ行として選択されるようにする。
【００３０】
ＤＲＡＭ３０は、比較的大きい記憶容量を低コストで提供することができるため、処理システムにおけるメインメモリとして使用されることが多く、メインメモリに関しては、すばやくアクセスできるようにデータを記憶するのではなく、メインメモリが大量バックアップを目的としているため、ＤＲＡＭ３０の比較的低速なアクセス待ち時間は問題にならない。
【００３１】
しかしながら、ＳＲＡＭから構築するのに経済的であるよりも、大容量のキャッシュメモリに対する要求がますます高まっている。ＤＲＡＭはコスト削減には魅力的であるが、キャッシュとしてのＤＲＡＭの使用にはパフォーマンス上の課題がいくつかある。特に、キャッシュがパフォーマンスと面積効率との間で適切なバランスをもたらすには、図１で説明したように、キャッシュをセットアソシアティブキャッシュとして実装することが望ましい場合が多い。しかしながら、セットアソシアティブキャッシュのためのタグルックアップは、ＤＲＡＭベースの記憶技術を使用して実施することが困難であり得る。図３および図４は、セットアソシアティブキャッシュを実装するためにＤＲＡＭを使用することができる２つの代替的な方法を示している。
【００３２】
図３に示すように、１つの手法は、各タグ−データ対からのデータ値をＤＲＡＭ３０に記憶し、ただし、タグ値を別個のＳＲＡＭベースの記憶構造５０に記憶することである。したがって、所与のアドレスに対するデータを得るためにキャッシュにアクセスすると、キャッシュコントローラ５２はそのアドレスのタグ部分をＳＲＡＭタグ記憶装置５０に出力し、ＳＲＡＭタグ記憶装置５０はタグ値を対応するセットの記憶されているタグと比較し、ヒットまたはミスがあるかを識別し、ヒットがある場合、一致タグに対応する目標ＤＲＡＭ位置を識別する列アドレスをＤＲＡＭ３０に提供する。その間、目標ＤＲＡＭ位置の行アドレスがキャッシュコントローラ５２によって提供される。したがって、ＤＲＡＭ３０は、行アドレスおよび列アドレスを使用して必要な記憶位置を識別し、必要なデータを返すことができる。書き込みの場合、ＳＲＡＭタグ記憶装置５０の同様のルックアップを実行することができるが、この場合、キャッシュコントローラ５２によって提供された書き込みデータが、行アドレスおよび列アドレスによって識別される記憶位置に書き込まれる。この手法の問題は、タグ記憶装置５０に使用されるＳＲＡＭが回路面積に関して高価であるということであり、これはキャッシュ容量が大きくなるにつれて特に問題となる。
【００３３】
図４は、各タグ−データ対のデータとタグの両方がＤＲＡＭ３０自体に記憶され、追加のＳＲＡＭベースのタグ記憶の一切の必要性を回避し、それによって回路面積を減少させる代替の手法を示す。しかしながら、この手法では、タグルックアップは、キャッシュコントローラが、ルックアップされるセットの特定のウェイを選択し、そのウェイのタグ値を記憶するＤＲＡＭ記憶位置の行および列アドレスを指定する読み取り動作を発行し、タグ値を読み出し、読み取ったタグを目標アドレスのタグ部分と比較して、ヒットまたはミスがあるかを判定することを要求する。ヒットがある場合、後続の読み取りアクセスが、その後、一致タグの対応するデータ値の行／列アドレスを指定することができ、その後、データが返される。ミスがある場合、最初のタグの比較と同じプロセスが次のタグに対して繰り返されるときに、インデックス付きセットの次のタグにアクセスするために別の読み取りアクセスを発行する必要があり、インデックス付きセット内のすべてのタグについて一致タグが識別されるかミスが識別されるまで、同様である。ウェイ予測５４は、いずれのウェイが以前にアクセスされたかを追跡し、正しいウェイが最初に選択される可能性を高めるために提供され得る。しかしながら、ウェイ予測ハードウェア５４は面積および電力消費コストを招き、たとえウェイ予測が比較的正確であっても、依然として、複数の順次のタグ読み取りアクセスが必要とされ、連続して実行され、同じく前のタグルックアップと連続する、後続のデータ読み取りアクセスが行われる場合がある。したがって、少なくとも各キャッシュアクセスは、最低２つのコマンド（１つはタグ読み取り、もう１つは読み取り／書き込みコマンド）が連続的に処理されることを必要とするが、時として、最初のタグ読み取りが目標アドレスのタグと一致しない場合、３つ以上のコマンドが必要になる場合がある。したがって、この手法はパフォーマンスの面で不十分である。
【００３４】
図５は、これらの問題に対処するためのキャッシュコントローラ６２およびＤＲＡＭ記憶回路６４を備えるデータ処理装置６０を示す。図４のように、データおよび関連付けられるタグの両方がＤＲＡＭ６４に記憶され、そのため、図３のように別個のＳＲＡＭベースのタグ記憶装置５０を必要とせず、回路面積を節約する。しかし、ＤＲＡＭ６４は、キャッシュコントローラ６２によって発行される単一のコマンドに応答してＤＲＡＭ６４内で複数のタグが並列に比較されることを可能にするタグマッチングコマンドをサポートし、パフォーマンスを改善する。読み取り動作の場合、キャッシュコントローラ６２はタグマッチング読み取りコマンドを発行し、ＤＲＡＭ６４に、ＤＲＡＭ位置の必要な行を識別する行アドレスと、ＤＲＡＭ位置のその行に記憶されているタグと比較されるタグ値とを提供する。行アドレスとタグ値の両方は、アクセスされるデータの目標メモリアドレスの関数としてキャッシュコントローラ６２によって生成することができる。タグマッチング読み取りコマンドに応答して、ＤＲＡＭ６４は、タグ値を、行アドレスによって識別される行内に記憶されている各タグ値と比較し、ヒットの場合には一致タグに対応するデータ値を返し、ミスの場合はミス指示を返す。書き込み動作の場合、キャッシュコントローラ６２は行アドレス、タグ値および書き込みデータを発行し、ここでもＤＲＡＭ６４はタグ値を対応する行に記憶されている各タグ値と比較し、ヒットの場合にはデータ値を一致タグに対応する位置に書き込み、ミスの場合にはデータ値およびその対応するタグを新しい記憶位置に割り当て、書き込み確認応答をキャッシュコントローラ６２に返す。この手法は、パフォーマンスと回路面積との間のより良好なバランスをもたらし、ＳＲＡＭが費用対効果に優れていないより大きいキャッシュに特に有用である。
【００３５】
図６は、図５のＤＲＡＭ６４をより詳細に示す。図２と同様に、ＤＲＡＭ６４は、記憶位置３４のアレイ３２、行バッファ３６、列マルチプレクサ３８、および行デコーダ４０を備える。行バッファ３６は複数のエントリ６８を含み、各エントリ６８は記憶アレイ３２の１列に対応する。タグが一致しない読み取りおよび書き込みコマンド、アクティブ化コマンド、およびプリチャージコマンドは、図２で説明したのと同じようにサポートされる。アクティブ化コマンドが受信されると、行アドレス４２によって識別される行の各記憶位置３４に記憶されている情報が行バッファ３６に転送され、各エントリ６８は、アクティブ化された行４６の対応する列にある記憶位置３４からの情報で更新される。図６に示すように、アクティブ行４６内のいくつかの位置はタグ値（Ｔ）を記憶し、一方、他の位置はデータ値（Ｄ）を記憶し、そのため、行バッファ６８はタグとデータとの混合を含む。
【００３６】
ＤＲＡＭ６４は、タグマッチングコマンドによって、行バッファ３６のエントリ６８の内容を、キャッシュコントローラ６２から供給されるタグ値７２と比較するための比較回路７０を有する。タグマッチングコマンドは、タグルックアップおよび関連付けられる読み取りをトリガするタグマッチング読み取りコマンド、またはタグルックアップおよび関連付けられる書き込みをトリガするタグマッチング書き込みコマンドであり得る。制御回路７４は、キャッシュコントローラ６２によって与えられるコマンドを受信し、ＤＲＡＭユニット６４のハードウェア内の適切な制御パスをアクティブにして、必要な動作を実行するように行デコーダ４０、列マルチプレクサ３８および比較器７０を制御するために設けられる。
【００３７】
したがって、タグマッチングコマンドが受信されると、制御回路７４は、受信タグ値７２を行バッファのエントリ６８のサブセットに記憶されているタグと比較するように、比較器７０を制御する。受信タグ７２と行バッファ３６に記憶されたタグとの間の比較は並行して実施され、そのため、タグが順次比較される図４で説明された場合よりも実施は速い。行バッファ３６内のタグのいずれかが受信タグ７２と一致する場合、ヒット信号がアサートされ、これが、ＤＲＡＭアレイ３２から対応するデータ値を読み取り、そのデータをキャッシュコントローラ６２に返す読み取り動作をトリガし得る。例えば、図６に示す構成では、タグおよびデータ値は対でインターリーブされており、そのため、所与のタグについてヒットが識別されると、対応するデータ値を行バッファ３６の隣接エントリから読み取ることができる。比較されたタグのいずれもが指定されたタグ値７２と一致しない場合、ミス指示がキャッシュコントローラ６２に返される。
【００３８】
図６に示すように、タグ値７２と一致する行バッファエントリ６８の列アドレスを、ＤＲＡＭユニット６４内の記憶要素７５に記憶することができる。これにより、後続のコマンド（図１３に関して以下に説明されるような「先行ヒットへの書き込み」）が、タグルックアップを繰り返す必要も、いずれのタグが一致したかをキャッシュコントローラ６２に知らせる必要もなく、一致タグを更新することが可能になる。図６では別個に示されているが、前にヒットしたタグを識別する記憶要素７５もまた行バッファ３６自体の一部であり得る。
【００３９】
比較器７０によって行バッファ３６のいずれの特定のエントリをタグ値７２と比較するかを制御するために、構成記憶要素７６を設けることができる。これにより、必要なキャッシュ構成に応じて、同じＤＲＡＭハードウェアが異なる割り当てにおいて構成されることが可能になる。図７の部分Ａ）およびＢ）に示されるように、タグおよびデータ値は所与の行に異なるパターンで配列することができ、例Ａ）は図６のようにインターリーブされたタグおよびデータを示す一方、例Ｂ）はすべてのタグＴが連続的に記憶され、その後、対応するデータ値Ｄが記憶される例を示す。したがって、構成データ７６は、タグを記憶するエントリを識別し、それらのエントリをタグ値７２と比較するように比較器７０を制御することができる。
【００４０】
異なるユーザはまた、異なるサイズのキャッシュラインまたは異なる関連性を使用することを望む場合がある。したがって、データおよびタグ値のサイズは、使用事例によって異なる。例えば、１２８ＭＢのＤＲＡＭ部品は、５１２バイトのキャッシュラインおよび４０ビットのタグを有する１６ウェイセットアソシアティブキャッシュとして構成され得、１バイトのステータス情報がある場合、これは、タグ−データ対ごとに５１６バイト、したがっておよそ８ｋＢのＤＲＡＭ行を必要とし得る。しかしながら、比較器７０が異なるセットの要素に対してマッチングするように構成データ７６を再構成することによって、同じ部分を１０２４バイトのキャッシュラインを有する８ウェイセットアソシアティブキャッシュとして使用することができる。例えば、キャッシュラインが大きくなるにつれて、図７の部分Ｃ）に示すように、１行はより少ないタグを含み得、したがって、比較器７０はタグ値７２を行バッファ３６の多くのエントリと比較する必要がなくなり得る。
【００４１】
多くの場合、１行の記憶位置が１セットのセットアソシアティブキャッシュ構造１０に対応するようにキャッシュを構成することが最も好都合であり得る。しかしながら、これは必須ではなく、場合によっては、ＤＲＡＭアレイ３２の１行が複数のセット１０に対応してもよい。この場合、行アドレス４２の一部を使用して行バッファ３６のいずれの部分をタグ値７２と比較するかを選択することができ、構成データ７６は行バッファ３６のその部分内のエントリのサブセットと考えるべき特定のエントリを識別することができる（代替的に、セットを識別する行アドレスの一部は、同じＤＲＡＭ行内の各セットに対して比較される行バッファエントリ６８の異なるサブセットを指定する複数の構成データセット７６の間で選択することができる）。
【００４２】
図８に示すように、ＤＲＡＭユニット６４は、多くの場合、複数のバンクの記憶位置を含み、各バンクは、上述したように、行と列に配列された記憶位置のＤＲＡＭアレイ３２の別個のインスタンス、行バッファ３６、列マルチプレクサ３８、行デコーダ４０、および比較回路７０を備える。入来するコマンドを処理し適切な信号経路をアクティブにするための制御回路７４はバンク間で共有することができる。したがって、キャッシュコントローラ６２から受信した行アドレス４２の一部は、いずれのバンクにアクセスするかを選択することができる。図８は２バンクのＤＲＡＭを有する例を示しているが、多くの場合、例えば４、８または１６バンクなど、より多くのバンクが存在し得る。したがって、各バンクは、上記の比較回路を使用してタグマッチングをサポートすることができる。
【００４３】
マルチバンクＤＲＡＭ実施態様では、図９に示すように、複数のタグ−データ対のデータ値およびタグ値を、別個のバンクの対応する行の間でインターリーブすることが有用であり得る。例えば、タグ−データ対Ｔ０−Ｄ０の場合、タグ値Ｔ０はバンク０の行ｘに記憶することができるが、その対応するデータ値Ｄ０はバンク１の行ｘに記憶される。タグ−データ対Ｔ１−Ｄ１も同様にバンク間で分割されるが、今度は、タグＴ１はバンク１に記憶され、データＤ１はバンク０に記憶される。行がアクティブであり、行バッファ３６のセンス増幅器にバッファリングされているとき、行バッファ３６への読み取りと書き込みは、行バッファ３６にラッチされている値を一時的に乱し、結果、同じ行への別の読み取り／書き込みアクセスが実行され得るまでに、行バッファ３６の内容が安定化するにはいくらか時間がかかるため、これは有用である。これは、１つのバンク内の行に対して１回の読み取り／書き込みを実行した後は、最初の読み取り／書き込み動作と同じバンク内で次のアクセスを実行するよりも、異なるバンクに対して次の読み取り／書き込みアクセスを実行する方が速くなることを意味する。バンク間で同じタグ−データ対のタグとデータ値とを分割することによって、例えばデータ値Ｄ０の読み取り／書き込み動作は、バンク０のタグＴ０へのタグアクセスに続いてバンク１において高速に実行できるため、より良好なパフォーマンスが可能になる。したがって、ヒット後に読み取り／書き込みがトリガされると、目標記憶位置は実際には異なるバンクにあり得る。
【００４４】
図９に示される手法では、タグルックアップは、バンク０の行バッファ３６−０に記憶されているインデックス付きセット内のタグを検索するための段階と、バンク１の行バッファ３６−１に記憶されているインデックス付きセット内のタグを検索するためのもう１つの段階との、２段階に分けることができる。一致タグがバンク０内で識別される場合、第２の段階は必要とされず、その代わりに一致タグのデータを記憶するエントリへの読み取り／書き込みを次に実行することができる。バンク０内でタグが一致しない場合、バンク１を使用して第２のタグマッチングステップが実行され、そこでヒットが識別された場合、バンク０内の対応するデータに対してさらなる読み取り／書き込み動作がトリガされる。タグ値７２がバンク１においてもミスした場合、ミス指示が返される。したがって、返される読み取りデータのタイミングは、タグ値７２が第１のバンクまたは第２のバンクで一致するかに依存し得る（代替的に、先行するタイミングで返された読み取りデータがＤＲＡＭにバッファリングされ得、結果、いずれのバンクにおいてタグがヒットしても、同じタイミングキャッシュコントローラ６２にデータが提供される）。それにもかかわらず、１つまたは２つのタグ検索動作が必要であるかにかかわらず、第１のバンクの安定化時間を最初に待つ必要なしに、第２のバンクが第１のバンクで行われた動作に続く後続の動作を開始することを可能にすることによって、パフォーマンスを改善できる。
【００４５】
図１０は、アクティブ化コマンドを処理する方法を示す。ステップ１００において、ＤＲＡＭ６４は、キャッシュコントローラ６２から行アドレス４２を指定するアクティブ化コマンドを受信する。ステップ１０２において、制御回路７２は、行アドレス４２に対応する記憶位置３４の行をアクティブ行４６として選択するように行デコーダ４０を制御し、アクティブ行４６のそれぞれの記憶位置に記憶されている情報を取り込むように行バッファ３６を制御する。
【００４６】
図１１は、タグマッチングコマンドを処理する方法を示す。ステップ１１０において、ＤＲＡＭ６４は、キャッシュコントローラ６２から行アドレス４２およびタグ値７２を指定するタグマッチングコマンドを受信する。タグマッチングコマンドはまた、それが読み取りコマンドであるか書き込みコマンドであるかを識別するパラメータを指定することもできる。ステップ１１２において、制御回路７４は、タグ値７２を行バッファ３６のエントリ６８のサブセットの各々と（構成記憶要素７６によって識別されているエントリのサブセットと）比較するように、比較回路７０を制御する。ステップ１１４において、制御回路は、比較回路７０がヒットまたはミスを識別したかを判定する。ヒットの場合、ステップ１１６において、制御回路７４は、一致タグエントリと関連付けられる記憶セル（これは上述したように同じバンクまたは異なるバンク内にあってもよい）を標的とする読み取りまたは書き込み動作をトリガし、読み取りデータまたは書き込み確認応答がキャッシュコントローラ６２に返される。ステップ１１８において、一致タグを含む行バッファエントリ６８の列アドレスが、後続のタグ更新動作による使用のために記憶要素７５に記憶される。ステップ１１４においてミスが識別された場合、ステップ１２０においてミス指示がキャッシュコントローラ６２に返される。
【００４７】
ステップ１２０において返されるミス指示は、ヒット時に送信されるのと反対の値に設定された専用ヒット／ミス信号であり得る。しかしながら、これはＤＲＡＭユニットに追加の出力ポートを必要とする場合があり、これは代わりにデータチャネルを使用してミスを信号で知らせることによって回避することができる（データチャネルはいずれにせよキャッシュミスが起こるとき未使用であるため）。一般に、任意の所定のビットパターンを使用してキャッシュミスを表すことができ、そのパターンは通常のデータアクセスでは発生し得ないパターンである。これを実施する１つの方法は、エラーから保護するために提供され得るエラー検出符号を利用することである。図１２に示されるように、ＤＲＡＭ６４に記憶された各データ値１３０は、エラー検出符号１３２と関連付けることができる。ＤＲＡＭ６４からデータを読み取る際に、チェック機能１３４を使用してデータ値１３０をハッシュすることができ、結果として得られるハッシュをエラー検出符号１３２と比較することができる。ハッシュがエラー検出符号１３２と一致する場合、データは正しいと判定され、一方、不一致はエラーが発生したことを知らせることができる。エラー検出符号がエラー訂正符号である場合、例えばエラー訂正符号に含まれる冗長情報に基づいて、エラーを訂正することもできる。したがって、チェック機能１３４をデータ値１３０の所定のビットパターンに適用した結果と一致しない無効なエラー検出符号１３２と共に、所定のビットパターンをデータ値１３０として返すことによって、ミス指示をキャッシュコントローラ６２に知らせることができる。キャッシュルックアップに応答してデータを受信すると、キャッシュコントローラ６２は、その後、データビット１３０の所定のパターン１３０と無効なエラー検出符号１３２との組み合わせから、キャッシュミスを信号で知らせるための別個の信号経路を必要とせずに、キャッシュミスが発生したことを識別することができる。
【００４８】
図１３は、前のタグマッチングコマンドに応答してヒットが発生したタグ値を更新するための先行ヒット書き込みコマンドを処理する方法を示す。ステップ１４０において、ＤＲＡＭユニット６４は、ＤＲＡＭに書き込まれるべき更新されたタグ値を指定する先行ヒット書き込みコマンドを受信する。ステップ１４２において、制御回路７４は、図１１のステップ１１８において先行して記憶された列アドレスを記憶要素７５から読み取る。ステップ１４４において、制御回路７４は、ステップ１４４において読み取られた列アドレスによって識別される行バッファ３６のエントリ６８への書き込み動作をトリガして、更新されたタグ値をそのエントリに書き込む。これはまた、ＤＲＡＭアレイ３２内の対応する記憶セルの対応する更新もトリガする。したがって、最近に一致したタグの列アドレスを記憶要素７５に記憶することによって、後続のタグ更新をより効率的に実行することができる。いくつかの実施態様では、すべてのキャッシュ読み取りまたは書き込み動作が、対応するタグが更新されることを必要とする場合があるため（特に、過去のキャッシュアクセス履歴に基づいて新たなデータを割り当てる際に追い出すべきエントリを選択するために、最長時間未使用のまたは他の犠牲選択アルゴリズムを使用するキャッシュにおいて）、これはキャッシュにとって有用である。
【００４９】
代替的に、ステップ１１８におけるようにヒット時に列アドレスを記憶するのではなく、図１１において、制御回路は、代わりに、いずれのエントリが行バッファの一致エントリであるかに基づいて選択された記憶位置内のキャッシュステータス情報を更新することができる。したがって、アクセスがキャッシュ内でヒットすると、ＤＲＡＭコントローラ７４はまた、そのセットに対応し、置換ポリシに使用される情報を更新する。置換ポリシビットは、データ自体と同じＤＲＡＭ行に配置されるため、行バッファ３６内に存在することになる。例えば、置換ポリシが疑似ＬＲＵ（最長時間未使用）である場合、ヒットするアクセス時に、アクセスされた要素がＭＲＵ（最短時間未使用）にあることを反映するように二分木の対応するビットが更新される。したがって、この特徴のために、ＤＲＡＭキャッシュはＤＲＡＭ行バッファに近い何らかの追加の論理を有し、これは、置換ポリシに従ってキャッシュヒット時に置換情報を更新する。
【００５０】
図１１および図１３に示される手法の利点は、ＤＲＡＭ記憶装置内の制御回路７４が、いずれの置換ポリシが使用されるかを意識する必要がなく、キャッシュコントローラによって選択され得る２つ以上の異なるポリシをサポートできることである。他方、タグマッチングコマンドに応答して直接キャッシュステータス情報を更新することによって、キャッシュヒット時に必要とされるコマンドが少なくなる。
【００５１】
予備の無効なエントリがないときにキャッシュがミスされると、関連するセット内で犠牲ブロックが選択され、データはそのブロックから追い出され、下のメモリからフェッチされた新しいブロックと置き換えられる。このような追い出しおよび置き換えを加速するために、置換ポリシの情報に基づいてデータをアクティブにして読み取る特別なタイプの読み取りコマンド（犠牲読み取りコマンド）を提供することができる。例えば、置換ポリシが疑似ＬＲＵの場合、犠牲読み取りコマンドは二分木をトラバースしてＬＲＵ要素を見つけ出す。コマンドはブロックのデータを返し、ブロックを無効にする。犠牲エントリの指示は、以前にヒットした列位置７５に記憶することができ、以前に読み取った位置（犠牲）に書き込むためのコマンドは、（図１３の先行ヒット書き込みコマンドと同様に）新しく挿入されたブロックを書き込む。したがって、この手法によって、ＤＲＡＭコントローラ７４は、行バッファ３６の列（タグおよびデータ）を読み取ることができる追加のコマンドを有し、ここで、読み取られる列は、行バッファ３６に記憶されているアクティブ行の位置の関連するサブセットから読み取られる置換ポリシの情報に従って選択される。
【００５２】
図１４は、例えば、キャッシュコントローラ６２がキャッシュ割り当ておよび追い出しについてより情報に基づいた決定を下すことを可能にするのに有用であり得る、所与の記憶位置のセットからのすべてのタグをキャッシュコントローラ６２に提供するためのタグ収集コマンドを処理する方法を示す。ステップ１５０において、ＤＲＡＭユニット６４はタグ収集コマンドを受信する（このコマンドは、先行するアクティブ化コマンドに応答してアクティブ化されたアクティブ行を暗黙的に目標にすることができるため、行アドレスを指定する必要はない）。タグ収集コマンドに応答して、ステップ１５２において、制御回路７２は、構成データ７６によって識別されるエントリのサブセットに記憶されているすべてのタグを読み取るように、列マルチプレクサ３８を制御し、読み取ったタグをキャッシュコントローラ６２に返す。読み取ったタグの合計サイズがデータチャネルの幅よりも大きい場合、タグは複数の転送においてキャッシュコントローラ６２に押し出すことができ、その後キャッシュコントローラ６２において組み立てることができる。次いで、キャッシュコントローラ６２は、読み取ったタグを使用してキャッシュ管理動作を実行することができる。
【００５３】
上述の例はＤＲＡＭベースの記憶回路６４に関するものであるが、行バッファ３６がアクティブ行４６内の記憶位置からの情報をバッファリングするために使用されるのと同じ技術を任意の形態のメモリ技術に使用できることが理解されよう。
【００５４】
本出願において、「〜ように構成されている」という用語は、装置の要素が定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配列または方法を意味する。例えば、装置は、規定の動作を提供する専用のハードウェアを有することができ、またはプロセッサもしくは他の処理装置が機能を実行するようにプログラムされてもよい。「〜ように構成されている」は、規定の動作を提供するために装置要素を何らかの方法で変更する必要があることを意味しない。
【００５５】
添付図面を参照して本発明の例示的な実施形態を詳細に説明したが、本発明はこれらの厳密な実施形態に限定されず、添付の特許請求の範囲によって規定される本発明の範囲および精神から逸脱することなく、様々な変更および修正が当業者によって実施され得ることが理解されるべきである。
【図１】
2019536165.tif 000003
【図２】
2019536165.tif 000004
【図３】
2019536165.tif 000005
【図４】
2019536165.tif 000006
【図５】
2019536165.tif 000007
【図６】
2019536165.tif 000008
【図７】
2019536165.tif 000009
【図８】
2019536165.tif 000010
【図９】
2019536165.tif 000011
【図１０】
2019536165.tif 000012
【図１１】
2019536165.tif 000013
【図１２】
2019536165.tif 000014
【図１３】
2019536165.tif 000015
【図１４】
2019536165.tif 000016
【国際調査報告】
2019536165.tif 000017
2019536165.tif 000018
2019536165.tif 000019