(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、キャッシュミス発生時、交替されるキャッシュデータを効率的に決定するためのキャッシュメモリ・システム及びその動作方法を提供するところにある。
【課題を解決するための手段】
【0007】
本発明の一実施形態によるキャッシュメモリ・システムは、メインメモリに保存されたデータのうち一部に該当するキャッシュデータを保存するデータメモリ;複数のウェイを有する少なくとも1つのセットを含み、前記キャッシュデータにそれぞれ対応するNビットのタグデータを、前記少なくとも1つのセットで保存するタグメモリ;外部から受信したセットアドレスが示すセットに含まれる前記タグデータそれぞれの上位K(1≦K<N)ビットと、前記外部から受信したNビットのタグアドレスの上位Kビットとを比較し、前記タグデータそれぞれの残り(N−K)ビットと、前記タグアドレスの残り(N−K)ビットとを比較し、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断するタグ比較部;及び前記キャッシュミスと判断される場合、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの比較結果によって、当該タグデータに対応するキャッシュデータを、アップデート候補として決定し、前記アップデート候補のうちいずれか1つのキャッシュデータを削除し、新たなデータでアップデートするアップデート制御部;を含んでもよい。
本発明の一実施形態によるアップデート制御部は、前記タグデータのうちいずれか1つの上位Kビットが、前記タグアドレスの上位Kビットと一致しない場合、前記いずれか一つに対応するキャッシュデータを、前記アップデート候補として決定することができる。
【0008】
本発明の一実施形態によるタグ比較部は、前記タグデータのうちいずれか一つも、前記タグアドレスと一致しない場合、前記キャッシュミスと判断し、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの比較結果を、前記アップデート制御部に出力することができる。
【0009】
本発明の一実施形態によるタグ比較部は、前記タグデータのうちいずれか一つと、前記タグアドレスが一致する場合、前記キャッシュヒットと判断することができる。
本発明の一実施形態によるキャッシュメモリ・システムは、前記キャッシュヒットと判断した場合、前記タグアドレスと一致するタグデータに対応するキャッシュデータを読み取り、前記外部に出力するデータ出力部をさらに含んでもよい。
【0010】
本発明の一実施形態によるキャッシュメモリ・システムが、前記セットアドレスが同一である複数のデータリクエストを受信する場合、前記アップデート制御部は、前記複数のデータそれぞれに対して受信した前記タグアドレスの上位Kビットと、前記タグデータそれぞれの上位Kビットとを比較した結果により、前記複数のデータそれぞれの前記アップデート候補を決定し、前記アップデート候補に含まれるキャッシュデータのうち前記アップデート候補として決定された回数が最多であるキャッシュデータを削除し、新たなデータでアップデートすることができる。
【0011】
本発明の一実施形態によるタグ比較部は、前記複数のデータにそれぞれ対応する比較ベクトルを出力し、前記比較ベクトルそれぞれは、前記ウェイの個数と同一個数の成分を含み、前記成分は、当該データのタグアドレスの上位Kビットと、前記タグデータそれぞれの上位Kビットとを比較し、一致する場合、第1値を示し、一致しない場合、第2値を示し、前記アップデート制御部は、前記比較ベクトルの前記成分値を前記ウェイ別に合算し、前記合算した結果値に基づいて、前記複数のウェイのうちいずれか一つに対応するキャッシュデータを削除し、新たなデータでアップデートすることができる。
本発明の一実施形態による第1値は1であり、第2値は0であり、前記アップデート制御部は、前記ウェイ別に合算した結果値のうち最小値を有するウェイに対応するキャッシュデータを削除し、新たなデータでアップデートすることができる。
【0012】
本発明の一実施形態によるキャッシュメモリ・システムは、メインメモリに保存されたデータのうち一部に該当するキャッシュデータを保存するデータメモリ;複数のウェイを有する少なくとも1つのセットを含み、前記キャッシュデータにそれぞれ対応するNビットのタグデータを、前記少なくとも1つのセットで保存するタグメモリ;外部から受信したセットアドレスが示すセットに含まれる前記タグデータそれぞれの上位K(1≦K<N)ビットと、前記外部から受信したNビットのタグアドレスの上位Kビットとの差値を計算し、前記タグアドレスと、前記タグデータそれぞれとを比較し、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断するタグ比較部;及び前記キャッシュミスと判断される場合、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの差値に基づいて、当該タグデータに対応するキャッシュデータを、アップデート候補として決定し、前記アップデート候補のうちいずれか1つのキャッシュデータを削除し、新たなデータでアップデートするアップデート制御部;を含んでもよい。
【0013】
本発明の一実施形態によるアップデート制御部は、前記差値が臨界値以上である場合、前記タグデータに対応するキャッシュデータを、アップデート候補として決定することができる。
【0014】
本発明の一実施形態によるタグ比較部は、前記タグデータのうちいずれか一つも、前記タグアドレスと一致しない場合、前記キャッシュミスと判断し、前記アップデート制御部に、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの差値を、前記アップデート制御部に出力することができる。
【0015】
本発明の一実施形態によるキャッシュメモリ・システムが、前記セットアドレスが同一である複数のデータリクエストを受信する場合、前記アップデート制御部は、前記複数のデータそれぞれに対して受信した前記タグアドレスの上位Kビットと、前記タグデータそれぞれの上位Kビットとの差値により、前記複数のデータそれぞれの前記アップデート候補を決定し、前記アップデート候補に含まれるキャッシュデータのうち、前記アップデート候補として決定された回数が最多であるキャッシュデータを削除し、新たなデータでアップデートすることができる。
【0016】
本発明の一実施形態によるキャッシュメモリ・システムの動作方法は、外部からリクエストされるデータに対応するセットアドレス、及びNビットのタグアドレスを受信する段階、受信したセットアドレスが示すセットに含まれるタグデータそれぞれの上位K(1≦K<N)ビットと、前記外部から受信したNビットのタグアドレスの上位Kビットとを比較し、前記タグデータそれぞれの残り(N−K)ビットと、前記タグアドレスの残り(N−K)ビットとを比較し、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断する段階、前記キャッシュミスと判断される場合、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの比較結果により、当該タグデータに対応するキャッシュデータを、アップデート候補として決定する段階、及び前記アップデート候補のうちいずれか1つのキャッシュデータを削除し、新たなデータでアップデートする段階を含んでもよい。
【0017】
本発明の一実施形態によるアップデート候補を決定する段階は、前記タグデータのうちいずれか1つの上位Kビットが、前記タグアドレスの上位Kビットと一致しない場合、前記いずれか一つに対応するキャッシュデータを、前記アップデート候補として決定する段階を含んでもよい。
【0018】
本発明の一実施形態によるキャッシュミスであるか否かを判断する段階は、前記タグデータのうちいずれか一つも、前記タグアドレスと一致しない場合、前記キャッシュミスと判断する段階を含み、前記方法は、前記キャッシュミスと判断される場合、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの比較結果を出力する段階をさらに含んでもよい。
【0019】
本発明の一実施形態によるキャッシュヒットであるか、あるいはキャッシュミスであるかを判断する段階は、前記タグデータのうちいずれか一つと、前記タグアドレスが一致する場合、前記キャッシュヒットと判断する段階を含んでもよい。
【0020】
本発明の一実施形態によるキャッシュメモリ・システムの動作方法は、前記キャッシュヒットと判断した場合、前記タグアドレスと一致するタグデータに対応するキャッシュデータを読み取り、前記外部に出力する段階をさらに含んでもよい。
【0021】
本発明の一実施形態によるキャッシュメモリ・システムの動作方法は、前記セットアドレスが同一である複数のデータリクエストを受信する段階をさらに含み、前記アップデート候補を決定する段階は、前記複数のデータそれぞれに対して受信した前記タグアドレスの上位Kビットと、前記タグデータそれぞれの上位Kビットとを比較した結果により、前記複数のデータそれぞれの前記アップデート候補を決定する段階であり、前記アップデートする段階は、前記アップデート候補に含まれるキャッシュデータのうち、前記アップデート候補として決定された回数が最多であるキャッシュデータを削除し、新たなデータでアップデートする段階でもある。
【0022】
本発明の一実施形態によるキャッシュメモリ・システムの動作方法は、前記複数のデータにそれぞれ対応する比較ベクトルを出力する段階をさらに含み、前記比較ベクトルそれぞれは、前記ウェイの個数と同一個数の成分を含み、前記成分は、当該データのタグアドレスの上位Kビットと、前記タグデータそれぞれの上位Kビットとを比較し、一致する場合、第1値を示し、一致しない場合、第2値を示し、前記アップデートする段階は、前記比較ベクトルの前記成分値を前記ウェイ別に合算し、前記合算した結果値に基づいて、前記複数のウェイのうちいずれか一つに対応するキャッシュデータを削除し、新たなデータでアップデートする段階でもある。
【0023】
本発明の一実施形態による第1値は1であり、前記第2値は0であり、前記アップデートする段階は、前記ウェイ別に合算した結果値のうち最小値を有するウェイに対応するキャッシュデータを削除し、新たなデータでアップデートする段階でもある。
【0024】
本発明の一実施形態によるキャッシュメモリ・システムの動作方法は、外部からリクエストされるデータに対応するセットアドレス、及びNビットのタグアドレスを受信する段階、受信したセットアドレスが示すセットに含まれる前記タグデータそれぞれの上位K(1≦K<N)ビットと、前記外部から受信したNビットのタグアドレスの上位Kビットとの差値を計算し、前記タグアドレスと、前記タグデータそれぞれとを比較し、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断する段階、前記キャッシュミスと判断される場合、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの差値に基づいて、当該タグデータに対応するキャッシュデータを、アップデート候補として決定する段階、及び前記アップデート候補のうちいずれか1つのキャッシュデータを削除し、新たなデータでアップデートする段階を含んでもよい。
【0025】
本発明の一実施形態によるアップデート候補を決定する段階は、前記差値が臨界値以上である場合、前記タグデータに対応するキャッシュデータを、アップデート候補として決定する段階でもある。
【0026】
本発明の一実施形態によるキャッシュミスであるか否かを判断する段階は、前記タグデータのうちいずれか一つも、前記タグアドレスと一致しない場合、前記キャッシュミスと判断する段階を含み、前記方法は、前記キャッシュミスと判断される場合、前記タグデータそれぞれの上位Kビットと、前記タグアドレスの上位Kビットとの差値を出力する段階をさらに含んでもよい。
【0027】
本発明の一実施形態によるキャッシュメモリ・システムの動作方法は、前記セットアドレスが同一である複数のデータリクエストを受信する段階をさらに含み、前記アップデート候補を決定する段階は、前記複数のデータそれぞれに対して受信した前記タグアドレスの上位Kビットと、前記タグデータそれぞれの上位Kビットとの差値により、前記複数のデータそれぞれの前記アップデート候補を決定する段階であり、前記アップデートする段階は、前記アップデート候補に含まれるキャッシュデータのうち、前記アップデート候補として決定された回数が最多であるキャッシュデータを削除し、新たなデータでアップデートする段階でもある。
【発明の効果】
【0028】
本発明によれば、キャッシュミスの発生時、交替されるキャッシュデータを決定するためのさらなる情報を必要とせず、メモリを最小化することができる。また、交替されるキャッシュデータを決定するためのロジックの複雑さの上昇を最小化することができる。
【発明を実施するための形態】
【0030】
本発明で使用される用語は、本発明での機能を考慮しながら、可能な限り現在汎用される一般的な用語を選択したが、それは、当業者の意図、判例、または新たな技術の出現などによって異なりもする。また、特定の場合は、出願人が任意に選定した用語もあり、その場合、当該発明の説明部分において、詳細にその意味を記載する。従って、本発明で使用される用語は、単純な用語の名称ではない、その用語が有する意味と、本発明の全般にわたった内容とを基に定義されなければならない。
【0031】
明細書全体において、ある部分がある構成要素を「含む」とするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいことを意味する。また、明細書に記載された「…部」、「…モジュール」のような用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアで具現化されたり、あるいはハードウェアとソフトウェアとの結合によって具現化されたりもする。
以下、添付した図面を参照し、本発明の実施形態について、本発明が属する技術分野で当業者が容易に実施することができるように詳細に説明する。しかし、本発明は、さまざまに異なる形態に具現化され、ここで説明する実施形態に限定されるものではない。
以下では、図面を参照し、本発明の実施形態について詳細に説明する。
【0032】
図1は、データ処理システムについて説明するための図面である。
図1を参照すれば、データ処理システムは、データ処理装置10及びメインメモリ200を含んでもよく、データ処理装置10は、コア(core)50及びキャッシュメモリ・システム100を含んでもよい。また、システムバス60には、キャッシュメモリ・システム100のラインと、メインメモリ50のラインとが接続される。
【0033】
図1では、説明の便宜のために、キャッシュメモリ・システム100が、コア50と別途に位置する場合を図示しているが、それに限定されるものではなく、キャッシュメモリ・システム100は、コア50と同一の1チップ内に含まれてもよい。また、
図1のデータ処理装置10は、グラフィックス処理装置(GPU:graphics processing unit)でもあるが、それに限定されるものではない。
【0034】
コア50は、データプロセッシング中に必要とするデータをリクエストするために、メインメモリ200にアクセスする前に、まずキャッシュメモリ・システム100にアクセスすることができる。例えば、データ処理装置10がGPUで構成される場合、コア50は、ピクセルシェーダコアによって構成されてもよい。ピクセルシェーダコアは、レンダリング時、ピクセルの色相値を決定するピクセルシェーディングを行い、ピクセルシェーダコアは、ピクセルの色相値の決定に使用するために、テクスチャ(texture)データをキャッシュメモリ・システム100にリクエストすることができる。また、コア50は、複数で構成されもし、複数のコアは、同時にキャッシュメモリ・システム100にデータをリクエストすることができる。
【0035】
キャッシュメモリ・システム100に、コア50がリクエストしたデータや命令(以下、ターゲットデータとする)が存在する場合、キャッシュヒット(cache hit)による動作が遂行される。キャッシュヒット時には、キャッシュメモリ・システム100から出力されたキャッシュデータ(ターゲットデータ)がコア50に出力される。
【0036】
コア50が、メインメモリ200より、キャッシュメモリ・システム100に先にアクセスする理由は、頻繁に使用されるメインメモリ200のデータの場合、キャッシュメモリ・システム100に保存されている確率が高いからである。従って、メインメモリ200より、キャッシュメモリ・システム100に先にアクセスすることにより、データ転送速度を向上させることができる。
【0037】
一方、キャッシュメモリ・システム100にターゲットデータが存在しない場合には、キャッシュミス(cache miss)による動作が遂行される。すなわち、その場合、キャッシュメモリ・システム100は、メインメモリ200にアクセスし、メインメモリ200から出力されたデータが、前記システムバス60を経て、キャッシュメモリ・システム200に印加される。
【0038】
そのとき、キャッシュメモリ・システム100は、既存に保存されているキャッシュデータのうちいずれか一つを削除し、メインメモリ200から出力されたデータを保存することができる。
【0039】
図2は、本発明の一実施形態によるキャッシュメモリ・システムの構成を示すブロック図である。
図2を参照すれば、本発明の一実施形態によるキャッシュメモリ・システム100は、タグ比較部110、キャッシュメモリ120及びアップデート制御部130を含んでもよい。
【0040】
キャッシュメモリ120は、タグメモリ123と、データメモリ125とを含んでもよい。データメモリ125は、メインメモリ200に保存されているデータの一部データ(キャッシュデータ)を保存する。すなわち、キャッシュデータは、メインメモリ200に保存されているメインデータのうちいずれか一つと同一である。タグメモリ123は、データメモリ125に保存されたキャッシュデータにそれぞれ対応するタグデータを保存することができる。タグデータは、キャッシュデータが保存されているメインメモリ200の実際アドレスを示すことができる。タグメモリ123と、データメモリ125との構造については、以下、
図3を参照し、詳細に説明する。
【0041】
図3を参照すれば、タグメモリ123とデータメモリ125は、少なくとも1つのセット310を含んでもよく、1つのセットは、複数のウェイ(way)を有することができる。タグメモリ123及びデータメモリ125のロウ(row)は、セットを示し、カラム(column)は、ウェイを示すことができる。すなわち、1つのセットは、タグメモリ123及びデータメモリ125の同一のロウに保存されてもよい。
【0042】
図3は、4個のウェイを有する4ウェイセット関連キャッシュメモリの構造を示す図面である。
図3に示されているように、キャッシュメモリが4ウェイセット関連キャッシュメモリで構成される場合、1つのセットは、第1キャッシュデータCD1、第2キャッシュデータCD2、第3キャッシュデータCD3及び第4キャッシュデータCD4と、第1キャッシュデータCD1、第2キャッシュデータCD2、第3キャッシュデータCD3及び第4キャッシュデータCD4それぞれのアドレスを示す、第1タグデータTD1、第2タグデータTD2、第3タグデータTD3及び第4タグデータTD4と、を含んでもよい。
【0043】
また、第1タグデータTD1、第2タグデータTD2、第3タグデータTD3及び第4タグデータTD4は、タグメモリ123の同一ロウに保存されてもよい。そのとき、第1タグデータTD1は、第1ウェイ(1−way)に対応し、第2タグデータTD2は、第2ウェイ(2−way)に対応し、第3タグデータTD3は、第3ウェイ(3−way)に対応し、第4タグデータTD4は、第4ウェイ(4−way)に対応する。第1タグデータTD1、第2タグデータTD2、第3タグデータTD3及び第4タグデータTD4にそれぞれ対応する、第1キャッシュデータCD1、第2キャッシュデータCD2、第3キャッシュデータCD3及び第4キャッシュデータCD4も、第1タグデータTD1、第2タグデータTD2、第3タグデータTD3及び第4タグデータTD4と同一の方式でデータメモリ125に保存されてもよい。
【0044】
一方、キャッシュメモリ・システム100は、外部からのリクエストデータに対応するアドレスビット320を受信することができる。そのとき、アドレスビット320は、
図3に示されているように、タグアドレス(Tag add)とセットアドレス(Set add)とを含んでもよい。そのとき、セットアドレス(Set add)は、キャッシュメモリのロウアドレスを示すデータである。すなわち、セットアドレス(Set add)は、キャッシュメモリ120に含まれる複数のセットのうちいずれか1つのセットを示す。
一方、タグ比較部110は、外部(例えば、コア)からのデータリクエストがある場合、リクエストされたデータが、キャッシュメモリ120に保存されているか否かを判断することができる。すなわち、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断する。
【0045】
タグ比較部110は、セットアドレス(Set add)が示すセット310に含まれるタグデータそれぞれがタグアドレスと一致するか否かを比較する。タグ比較部110は、タグアドレス(Tag add)のNビットがタグデータのうちいずれか1つのNビットと一致する場合、キャッシュヒットと判断する。すなわち、キャッシュヒットは、外部からリクエストされたターゲットデータが、データメモリ内に存在していることを示す。
【0046】
タグ比較部110は、タグアドレス(Tag add)のNビットのうち上位K(1≦K<N)ビット(Tag add[N−1:N−K])と、タグデータのNビットのうち上位Kビット(tagway[N−1:N−K])とを比較することができる。また、タグ比較部110は、タグアドレス(Tag add)の残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータの残り(N−K)ビット(tagway[N−K−1:0])とを比較することができる。タグ比較部110は、比較結果に基づいて、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断する。それについては、
図4及び
図5を参照し、詳細に説明する。
【0047】
タグ比較部110がキャッシュヒットと判断した場合、タグアドレス(Tag add)と一致するタグデータに対応するキャッシュデータが外部に出力される。タグ比較部110は、データ出力部150にキャッシュヒット信号を出力することができ、データ出力部150は、データメモリ125に保存されているキャッシュデータを読み取り、外部に出力することができる。一方、タグ比較部110がキャッシュミスと判断した場合、タグ比較部110は、メインメモリ200にキャッシュミス信号を出力し、ターゲットデータをリクエストすることができる。また、タグ比較部110は、タグアドレス(Tag add)の残り(N−K)ビットと、タグデータの残り(N−K)ビットとを比較した結果をアップデート制御部130に出力することができる。
【0048】
アップデート制御部130は、タグアドレスの残り(N−K)ビットと、タグデータの残り(N−K)ビットとを比較した結果に基づいて、アップデート候補を決定することができる。アップデート制御部130は、アップデート候補として決定されたキャッシュデータのうちいずれか一つを削除し、メインメモリ200から受信した新たなデータでアップデートすることができる。
【0049】
図4は、本発明の一実施形態による、1つのセットに含まれる複数のウェイのうち1つのウェイに対応するタグデータを、タグアドレスと比較する方法について説明するために参照される図面である。
【0050】
図4を参照すれば、タグメモリ123に保存されたタグデータ及びタグアドレスは、Nビットで示すことができる。また、タグ比較部110は、第1比較器410、第2比較器420及びAND演算器430を含んでもよい。第1比較器410は、Kビット比較器でもあり、第2比較器420は、(N−K)ビット比較器でもある。
【0051】
タグ比較部110は、第1比較器410を利用して、タグアドレス(Tag add)の上位K(1≦K<N)ビット(Tag add[N−1:N−K])と、タグデータの上位Kビット(tagway[N−1:N−K])とを比較することができる。また、タグ比較部110は、第2比較器420を利用して、タグアドレス(Tag add)の残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータの残り(N−K)ビット(tagway[N−K−1:0])とを比較することができる。
【0052】
第1比較器410は、タグアドレスの上位K(1≦K<N)ビット(Tag add[N−1:N−K])と、タグデータそれぞれの上位Kビット(tagway[N−1:N−K])とが一致する場合、「1」を出力し、一致しない場合、「0」を出力することができる。または反対に、タグアドレスの上位K(1≦K<N)ビット(Tag add[N−1:N−K])と、タグデータの上位Kビット(tagway[N−1:N−K])とが一致する場合、「0」を出力し、一致しない場合、「1」を出力することができる。ただし、それに限定されるものではない。
【0053】
また、第2比較器420は、タグアドレスの残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータの残り(N−K)ビット(tagway[N−K−1:0])とが一致する場合、「1」を出力し、一致しない場合、「0」を出力することができる。または反対に、タグアドレスの残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータの残り(N−K)ビット(tagway[N−K−1:0])とが一致する場合、「0」を出力し、一致しない場合、「1」を出力することができる。ただし、それに限定されるものではない。
【0054】
以下では、説明の便宜のために、第1比較器410及び第2比較器420は、入力されるビットデータが一致する場合、「1」を出力するとして説明する。
【0055】
AND演算器430は、第1比較器410の出力値と、第2比較器420の出力値とを入力値にして、AND演算を行うことができる。例えば、タグアドレスの上位K(1≦K<N)ビット(Tag add[N−1:N−K])と、タグデータそれぞれの上位Kビット(tagway[N−1:N−K])とが一致(第1比較器410から「1」が出力される)し、タグアドレスの残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータの残り(N−K)ビット(tagway[N−K−1:0])とが一致(第2比較器420から「1」が出力される)する場合、AND演算器430は、「1」を出力することができる。
【0056】
反対に、タグアドレスの上位K(1≦K<N)ビット(Tag add[N−1:N−K])と、タグデータそれぞれの上位Kビット(tagway[N−1:N−K])とが一致しないか、あるいはタグアドレスの残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータの残り(N−K)ビット(tagway[N−K−1:0])とが一致しない場合、AND演算器430は、「0」を出力することができる。
【0057】
すなわち、AND演算器430で1が出力される場合、タグアドレスのNビット(Tag add[N−1:0])と、タグデータのNビット(tagway[N−1:0])とが一致すると判断され、AND演算器430で0が出力される場合、タグアドレスのNビット(Tag add[N−1:0])と、タグデータのNビット(tagway[N−1:0])とが一致しないと判断される。
【0058】
図5は、本発明の一実施形態による、1つのセットに含まれる複数のウェイに対応するタグデータを、それぞれタグアドレスと比較する方法について説明するために参照される図面である。
【0059】
図5を参照すれば、ウェイがM個である場合、タグ比較部110は、M個の第1比較器と、M個の第2比較器とを含み、2M個のAND演算器を含んでもよい。
【0060】
タグ比較部110は、
図4で説明したように、複数のウェイに対応するタグデータそれぞれを、タグアドレス(Tag add)と比較することができる。タグデータとタグアドレス(Tag add)とを比較する方法については、
図4で詳細に説明したので、ここでは説明を省略する。
【0061】
一方、タグ比較部110は、第2AND演算器510をさらに含んでもよい。第2AND演算器510は、データメモリ125の当該ウェイにキャッシュデータが保存されているか否かを示す値(valid_way)と、当該ウェイのタグデータ及びタグアドレスが一致するか否かを示す値とを入力される。そのとき、キャッシュデータが保存されているか否かを示す値(valid_way)は、当該ウェイにキャッシュデータが保存されている場合、「1」を示し、当該ウェイにキャッシュデータが保存されていない場合、「0」を示すことができる。
【0062】
それにより、当該ウェイに、キャッシュデータが保存されていないか(valid_wayは「0」)、あるいは当該ウェイのタグデータとタグアドレス(Tag add)とが一致しない場合、第2AND演算器510は、「0」を出力することができる。また、当該ウェイに、キャッシュデータが保存(valid_wayは「1」)されており、当該ウェイのタグデータ及びタグアドレスが一致する場合、第2AND演算器510は、「1」を出力することができる。タグ比較部110は、ウェイにそれぞれ対応するM個の第2AND演算器から出力される値を、ベクトル(hit_results[M−1:0])として出力することができ、そのとき、ベクトルの大きさは、ウェイの数(M)と同一である。
【0063】
例えば、
図5に示されているように、キャッシュメモリが4ウェイキャッシュメモリによって構成される場合、第1ウェイに対応する第2AND演算器から1を出力し、第2ウェイに対応する第2AND演算器から0を出力し、第3ウェイに対応する第2AND演算器から0を出力し、第4ウェイに対応する第2AND演算器から0が出力することができる。また、出力されるベクトル(hit_results)は、[1,0,0,0]として示すことができる。
【0064】
そのとき、タグ比較部110は、ベクトルの成分のうちいずれか一つが1を示す場合、キャッシュヒットと判断する。すなわち、1を示す成分がある場合、当該成分に対応するウェイのタグデータがタグアドレスと一致し、タグアドレスと一致するタグデータに対応するキャッシュデータが、外部(例えば、コア50)からリクエストされたターゲットデータであることを示す。
キャッシュヒットと判断されれば、データ出力部150は、タグアドレスと一致するタグデータに対応するキャッシュデータを、データメモリから読み取り、外部に出力することができる。
【0065】
一方、タグ比較部110は、ベクトルの成分がいずれも0を示す場合、キャッシュミスと判断する。すなわち、全てのウェイのタグデータがタグアドレス(Tag add)と一致せず、コア50からリクエストされたターゲットデータが、キャッシュメモリ125に保存されていないことを示す。
【0066】
キャッシュミスと判断されれば、タグ比較部110は、ウェイにそれぞれ対応する第1比較器で出力される値をベクトル(hit_result_h[M−1:0])に出力することができる。
【0067】
図6は、本発明の一実施形態によるベクトル(hit_results_h[M−1:0])の一例を示す図面である。
【0068】
そのとき、ベクトルの大きさは、ウェイの数(M)と同一であり、
図6は、4個のウェイを有する場合のベクトル(hit_results_h[M−1:0])を示す図面である。ベクトル(hit_results_h[M−1:0])の成分のうち「0」を示す成分は、当該成分に対応するタグデータの上位Kビット(tagway[N−1:N−K])が、タグアドレスの上位Kビット(Tag add[N−1:N−K])と一致しないことを示す。一方、ベクトル(hit_result_h[])の成分のうち「1」を示す成分は、当該成分に対応するタグデータの上位Kビット(tagway[N−1:N−K])が、タグアドレスの上位Kビット(Tag add[N−1:N−K])と一致することを示す。
【0069】
アップデート制御部130は、タグアドレスの上位Kビット(Tag add[N−1:N−K])と、タグデータの上位Kビット(tagway[N−1:N−K])とが一致しない場合、当該タグデータに対応するキャッシュデータと、外部からリクエストされたデータ(ターゲットデータ)との空間的地域性(spatial locality)がないと判断することができる。それにより、ベクトル(hit_results_h[])の成分のうち「0」を示す成分に対応するウェイのキャッシュデータを、アップデート候補として決定することができる。
【0070】
アップデート制御部130は、キャッシュミスの場合、ターゲットデータをメインメモリ200から受信し、アップデート候補として決定されたキャッシュデータのうちいずれか一つを削除し、メインメモリ200から受信した新たなデータでアップデートすることができる。
【0071】
データ出力部150は、メインメモリ200から受信した新たなデータを、外部(例えば、コア50)に出力することができる。
【0072】
図7は、本発明の一実施形態による、キャッシュメモリ・システムのデータアップデート方法を示すフローチャートである。
【0073】
図7を参照すれば、キャッシュメモリ・システム100は、Nビットのタグアドレス(Tag add[N−1:0])を受信することができる(S710)。
【0074】
例えば、
図3で説明したように、キャッシュメモリ・システム100は、外部からデータリクエストを受信することができ、リクエストされるデータに対応するセットアドレス(Set add)及びタグアドレス(Tag add)を含むアドレスビットを受信することができる。セットアドレス(Set add)は、キャッシュメモリのロウアドレスを示すデータであり、タグアドレス(Tag add)は、リクエストされるデータのメインメモリ200での実際アドレスでもある。
【0075】
また、タグアドレス(Tag add)は、Nビットでもある。アドレスビットが受信されれば、キャッシュメモリ・システム100は、セットアドレス(Set add)が示すセットに含まれるタグデータを出力することができる。そのとき、タグデータは、タグアドレス(Tag add)と同一のNビットでもある。
【0076】
キャッシュメモリ・システム100は、出力されたタグデータそれぞれの上位Kビットと、タグアドレスの上位Kビットとを比較し、タグデータそれぞれの残り(N−K)ビットと、タグアドレスの残り(N−K)ビットとを比較することができる(S720)。
【0077】
例えば、キャッシュメモリ・システム100は、第1比較器410及び第2比較器420を含んでもよい。キャッシュメモリ・システム100は、第1比較器410を利用して、タグアドレスの上位K(1≦K<N)ビット(Tag add[N−1:N−K])と、タグデータの上位Kビット(tagway[N−1:N−K])とを比較することができる。また、キャッシュメモリ・システム100は、第2比較器420を利用して、タグアドレスの残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータの残り(N−K)ビット(tagway[N−K−1:0])とを比較することができる。
【0078】
キャッシュメモリ・システム100は、比較結果に基づいて、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断することができる(S730)。
【0079】
例えば、出力されたタグデータのうち、いずれか1つのタグデータが、タグアドレスと一致する場合、キャッシュメモリ・システム100は、キャッシュヒットと判断する。一方、出力されたタグデータのうち、タグアドレスと一致するタグデータが存在しない場合、キャッシュメモリ・システム100は、キャッシュミスと判断する。
【0080】
そのとき、セットアドレス(Set add)が示すセットのキャッシュデータのうち、有効ではないデータが存在する場合(少なくとも1つのキャッシュラインが空いている場合)、キャッシュメモリ・システム100は、メインメモリから受信したターゲットデータを、空いているキャッシュラインに保存することができる。
【0081】
一方、セットアドレス(Set add)が示すセットのキャッシュデータがいずれも有効である場合(全てのキャッシュラインにキャッシュデータが保存されている場合)、キャッシュメモリ・システム100は、タグデータそれぞれの上位Kビットと、タグアドレスの上位Kビットとを比較した結果により、当該タグデータに対応するキャッシュデータを、アップデート候補として決定することができる(S740)。
【0082】
例えば、キャッシュメモリ・システム100は、キャッシュミスと判断される場合、出力されたタグデータそれぞれに対して、タグデータの上位Kビット(tagway[N−1:N−K])と、タグアドレスの上位Kビット(Tag add[N−1:N−K])とが一致する場合、当該タグデータに対応するキャッシュデータを、アップデート候補に含めることができる。一方、タグデータの上位Kビット(tagway[N−1:N−K])と、タグアドレスの上位Kビット(Tag add[N−1:N−K])とが一致しない場合、当該タグデータに対応するキャッシュデータを、アップデート候補から除外させることができる。
【0083】
キャッシュメモリ・システム100は、決定されたアップデート候補のうちいずれか1つのキャッシュデータを削除し、新たなデータでアップデートすることができる(S750)。
【0084】
キャッシュメモリ・システム100は、キャッシュミスと判断される場合、キャッシュミス信号を出力し、メインメモリからターゲットデータを受信することができる。キャッシュメモリ・システム100は、決定されたアップデート候補のうちいずれか1つのキャッシュデータを削除し、メインメモリ200から受信したデータでアップデートすることができる。
【0085】
図8は、本発明の一実施形態による、キャッシュメモリ・システムのキャッシュデータアップデート方法を示すフローチャートである。
図8を参照すれば、キャッシュメモリ・システムは、セットアドレスが同一である複数のデータリクエストを受信することができる(S810)。
【0086】
例えば、
図1のコア50がマルチコアによって構成される場合、キャッシュメモリ・システム100は、同時に複数のデータリクエストを受信することができる。キャッシュメモリ・システム100は、複数のデータそれぞれに対応するタグアドレス(Tag add)及びセットアドレス(Set add)を受信することができ、そのとき、複数のデータにそれぞれ対応するセットアドレスは同一である。
【0087】
キャッシュメモリ・システム100は、複数のデータそれぞれに対して、
図4で説明したように、受信したタグアドレスの上位Kビット(Tag add[N−1:N−K])と、セットアドレス(Set add)が示すセットに含まれるタグデータそれぞれの上位Kビット(tagway[N−1:N−K])とを比較し、タグアドレスの残り(N−K)ビット(Tag add[N−K−1:0])と、タグデータそれぞれの(N−K)ビット(tagway[N−K−1:0])とを比較することができる。キャッシュメモリ・システム100は、比較結果に基づいて、リクエストされた複数のデータそれぞれに対して、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断することができる。それについては、
図5で詳細に説明したので、具体的な説明は省略する。
【0088】
また、キャッシュミスの場合、キャッシュメモリ・システム100は、複数のデータそれぞれに対して、
図9に示されているように、ベクトル(hit_results_h[])を出力することができる。
【0089】
例えば、キャッシュメモリ・システム100が4個のデータを同時にリクエストされた場合、第1データに対応するベクトル(hit_result_h[0][M−1:0]=[1000])、第2データに対応するベクトル(hit_result_h[1][M−1:0]=[0000])、第3データに対応するベクトル(hit_result_h[2][M−1:0]=[0110])、及び第4データに対応するベクトル(hit_result_h[3][M−1:0]=[0000])を出力することができる。
【0090】
そのとき、ベクトルの成分値が1を示せば、タグアドレスの上位Kビット(Tag add[N−1:N−K])と、当該ウェイのタグデータの上位Kビット(tagway[N−1:N−K])とが一致するという意味であり、ベクトルの成分値が0を示せば、タグアドレスの上位Kビット(Tag add[N−1:N−K])と、当該ウェイのタグデータの上位Kビット(tagway[N−1:N−K])とが一致しないことを意味する。それについては、
図6で詳細に説明したので、具体的な説明は省略する。
【0091】
それにより、キャッシュメモリ・システム100は、ベクトルの成分値に基づいて、複数のデータそれぞれに対するアップデート候補を決定することができる(S820)。
【0092】
例えば、ベクトルの成分値が0である場合(当該ウェイのタグデータの上位Kビットと、タグアドレスの上位Kビットとが一致しない場合)、キャッシュメモリ・システム100は、外部(例えば、コア50)からリクエストされたデータと、当該タグデータに対応するキャッシュデータは、空間的地域性がないと判断することができる。それにより、キャッシュメモリ・システム100は、ベクトル(hit_results_h[])の成分のうち「0」を示す成分に対応するウェイのキャッシュデータを、アップデート候補として決定することができる。
【0093】
図9を参照すれば、キャッシュメモリ・システム100は、第1データに対して、第2ウェイに対応するキャッシュデータ(第2キャッシュデータ)、第3ウェイに対応するキャッシュデータ(第3キャッシュデータ)、及び第4ウェイに対応するキャッシュデータ(第4キャッシュデータ)をアップデート候補として決定することができる。また、キャッシュメモリ・システム100は、第2データ及び第4データに対して、第1ウェイないし第4ウェイそれぞれに対応するキャッシュデータ(第1キャッシュデータないし第4キャッシュデータ)をアップデート候補として決定することができ、第3データに対して、第1キャッシュデータ及び第4キャッシュデータを、アップデート候補として決定することができる。
【0094】
複数のデータそれぞれに対して、アップデート候補が決定されれば、キャッシュメモリ・システム100は、複数のデータに対して、アップデート候補として決定された回数が最多であるキャッシュデータを削除し、新たなデータでアップデートすることができる(S830)。
【0095】
例えば、
図9を参照すれば、第1キャッシュデータの場合、第2データないし第4データに対するアップデート候補として決定され、アップデート候補として決定された回数が3回である。また、第2キャッシュデータの場合も、第2データないし第4データに対するアップデート候補として決定され、アップデート候補として決定された回数が3回である。また、第3キャッシュデータの場合、第1データ、第2データ及び第4データに対するアップデート候補として決定され、アップデート候補として決定された回数が3回である。第4キャッシュデータの場合、第1データないし第4データに対するアップデート候補として決定され、アップデート候補として決定された回数が4回である。
【0096】
それにより、キャッシュメモリ・システム100は、第4キャッシュデータを削除し、新たなデータでアップデートすることができる。
【0097】
一方、キャッシュメモリ・システム100は、
図9に示されているように、複数のベクトルが出力される場合、複数のベクトルの成分値をウェイ別に合算することができる。そのとき、キャッシュメモリ・システム100は、複数のウェイのうち合算値が最小であるウェイを選択することができ、選択されたウェイに対応するキャッシュデータを削除し、新たなデータでアップデートすることができる。
【0098】
例えば、各データに対して、第1ウェイの合算値は1となり、第2ウェイの合算値は1となり、第3ウェイの合算値は1となり、第4ウェイの合算値は0となる。キャッシュメモリ・システム100は、合算値が最小である第4ウェイを選択することができ、選択された第4ウェイに対応するキャッシュデータを削除し、新たなデータでアップデートすることができる。
【0099】
図10は、本発明の一実施形態による、1つのセットに含まれる複数のウェイのうち1つのウェイに対応するタグデータを、タグアドレスと比較する方法について説明するために参照される図面である。
【0100】
図10を参照すれば、タグメモリに保存されたタグデータ及びタグアドレスは、Nビットで示すことができる。また、タグ比較部110は、第3比較器1010、減算器1020を含んでもよい。第3比較器1010は、Nビット比較器でもあり、減算器1020は、Kビット減算器でもある。
【0101】
タグ比較部110は、第3比較器1010を利用して、タグアドレスのNビット(Tag add[N−1:0])と、タグデータのNビット(tagway[N−1:0])とを比較することができる。第3比較器1010は、タグアドレスのNビット(Tag add[N−1:0])と、タグデータのNビット(tagway[N−1:0])とが一致する場合、「1」を出力し、一致しない場合、「0」を出力することができる。または、反対に、タグアドレスのNビット(Tag add[N−1:0])と、タグデータのNビット(tagway[N−1:0])とが一致する場合、「0」を出力し、一致しない場合、「1」を出力することができる。ただし、それに限定されるものではない。以下では、説明の便宜のために、第3比較器1010に入力されるビットデータが一致する場合、「1」を出力するとして説明する。
【0102】
また、タグ比較部110は、減算器1020を利用して、タグアドレスの上位Kビット(Tag add[N−1:N−K])と、タグデータの上位K(1≦K<N)ビット(tagway[N−1:N−K])との差値を演算することができる。
【0103】
また、タグ比較部110は、第4比較器1030をさらに含み、第4比較器1030は、減算器1020から出力された差値が、臨界値以下であるならば、1を出力し、減算器1020から出力された差値が、臨界値以上であるならば、0を出力することができる。ただし、それに限定するものではない。
【0104】
図11は、本発明の一実施形態による、1つのセットに含まれる複数のウェイに対応するタグデータを、それぞれタグアドレスと比較する方法について説明するために参照される図面である。
【0105】
図11を参照すれば、ウェイがM個である場合、タグ比較部110は、M個の第3比較器と、M個の減算器とを含み、M個の第2AND演算器を含んでもよい。
【0106】
タグ比較部110は、
図10で説明したように、複数のウェイに対応するタグデータそれぞれを、タグアドレスと比較することができる。タグデータとタグアドレスとを比較する方法については、
図10で詳細に説明したので、ここでは説明を省略する。
【0107】
一方、タグ比較部110は、第2AND演算器510をさらに含んでもよい。第2AND演算器510は、データメモリ125の当該ウェイにキャッシュデータが保存されているか否かを示す値(valid_way)と、当該ウェイのタグデータ及びタグアドレスが一致するか否かを示す値とを入力される。そのとき、キャッシュデータが保存されているか否かを示す値(valid_way)は、当該ウェイにキャッシュデータが保存されている場合、「1」を示し、当該ウェイにキャッシュデータが保存されていない場合「0」を示すことができる。
【0108】
それにより、当該ウェイにキャッシュデータが保存されていないか(valid_wayは「0」)、あるいは当該ウェイのタグデータ及びタグアドレスが一致しない場合、第2AND演算器510は、「0」を出力することができる。また、当該ウェイにキャッシュデータが保存(valid)されており、当該ウェイのタグデータ及びタグアドレスが一致する場合、第2AND演算器510は、「1」を出力することができる。
【0109】
タグ比較部110は、ウェイにそれぞれ対応するM個の第2AND演算器から出力される値を、ベクトル(hit_results[])として出力することができ、そのとき、ベクトルの大きさは、ウェイ数(M)と同一である。例えば、第1ウェイに対応する第2AND演算器から1を出力され、第2ウェイに対応する第2AND演算器から0を出力され、第3ウェイに対応する第2AND演算器から0を出力され、第4ウェイに対応する第2AND演算器から0が出力されれば、ベクトル(hit_result)は、[1,0,0,0]として示すことができる。
【0110】
そのとき、タグ比較部110は、ベクトルの成分のうちいずれか一つが1を示す場合、キャッシュヒットと判断する。すなわち、1を示す成分がある場合、当該成分に対応するウェイのタグデータがタグアドレスと一致し、タグアドレスと一致するタグデータに対応するキャッシュデータが、外部(例えば、コア50)からリクエストされたターゲットデータであることを示す。
【0111】
キャッシュヒットと判断されれば、データ出力部150は、タグアドレスと一致するタグデータに対応するキャッシュデータを、データメモリから読み取り、外部に出力することができる。
【0112】
一方、タグ比較部110は、ベクトルの成分がいずれも0を示す場合、キャッシュミスと判断する。すなわち、全てのウェイのタグデータがタグアドレスと一致せず、外部(例えば、コア50)からリクエストされたターゲットデータが、キャッシュメモリに保存されていないことを示す。
【0113】
キャッシュミスと判断されれば、タグ比較部110は、ウェイにそれぞれ対応する第4比較器1030から出力される値を、ベクトル(hit_results_d[])に出力することができる。
【0114】
そのとき、ベクトルの大きさは、ウェイの数(M)と同一である。ベクトルの成分のうち0を示す成分は、当該成分に対応するタグデータの上位Kビットと、タグアドレスの上位Kビットとの差が臨界値より大きいことを示す。一方、ベクトルの成分のうち「1」を示す成分は、当該成分に対応するタグデータの上位Kビットと、タグアドレスの上位Kビットとの差が臨界値以下であることを示す。
【0115】
アップデート制御部130は、タグアドレスの上位Kビットと、タグデータの上位Kビットとの差が臨界値より大きい場合、当該タグデータに対応するキャッシュデータと、外部からリクエストされたデータ(ターゲットデータ)との空間的地域性がないと判断することができる。それにより、ベクトル(hit_result_h[])の成分のうち、「0」を示す成分に対応するウェイのキャッシュデータを、アップデート候補として決定することができる。
【0116】
アップデート制御部130は、キャッシュミスの場合、ターゲットデータをメインメモリ200から受信し、アップデート候補として決定されたキャッシュデータのうちいずれか一つを削除し、メインメモリ200から受信した新たなデータでアップデートすることができる。また、データ出力部150は、メインメモリ200から受信した新たなデータを外部に出力することができる。
【0117】
図12は、本発明の一実施形態による、キャッシュメモリ・システムのデータアップデート方法を示すフローチャートである。
図12を参照すれば、キャッシュメモリ・システム100は、Nビットのタグアドレスを受信することができる(S1210)。
【0118】
例えば、
図3で説明したように、キャッシュメモリ・システム100は、外部からデータリクエストを受信することができ、リクエストされるデータに対応するセットアドレス(Set add)及びタグアドレス(Tag add)を含むアドレスビットを受信することができる。セットアドレス(Set add)は、キャッシュメモリのロウアドレスを示すデータであり、タグアドレス(Tag add)は、リクエストされるデータのメインメモリ200での実際アドレスでもある。
【0119】
また、タグアドレス(Tag add)は、Nビットでもある。アドレスビットが受信されれば、キャッシュメモリ・システム100は、セットアドレス(Set add)が示すセットに含まれるタグデータを出力することができる。そのとき、タグデータは、タグアドレス(Tag add)と同一のNビットでもある。
【0120】
キャッシュメモリ・システム100は、出力されたタグデータそれぞれのNビットと、タグアドレスのNビットとを比較し、タグデータそれぞれの上位Kビットと、タグアドレスの上位Kビットとの差値を演算し、臨界値と比較することができる(S1220)。
【0121】
例えば、キャッシュメモリ・システム100は、第3比較器1010、減算器1020及び第4比較器1030を含んでもよい。キャッシュメモリ・システム100は、第3比較器1010を利用して、タグアドレスのNビット(Tag add[N−1:0])と、タグデータのNビット(tagway[N−1:0])とを比較することができる。また、キャッシュメモリ・システム100は、減算器1020を利用して、タグアドレスの上位Kビット(Tag add[N−1:N−K])と、タグデータの上位Kビット(tagway[N−1:N−K])との差値を演算することができる。また、キャッシュメモリ・システム100は、第4比較器1030を利用して、演算された差値が臨界値以下であるか否かを判断することができる。
【0122】
キャッシュメモリ・システム100は、出力されたタグデータそれぞれのNビットと、タグアドレスのNビットとを比較した結果に基づいて、キャッシュヒットであるか、あるいはキャッシュミスであるかを判断することができる(S1230)。
【0123】
例えば、出力されたタグデータのうち、いずれか1つのタグデータが、タグアドレスと一致する場合、キャッシュメモリ・システムは、キャッシュヒットと判断する。一方、出力されたタグデータのうち、タグアドレスと一致するタグデータが存在しない場合、キャッシュミスと判断する。
【0124】
そのとき、セットアドレス(Set add)が示すセットのキャッシュデータのうち、有効ではないデータが存在する場合(少なくとも1つのキャッシュラインが空いている場合)、メインメモリから受信したターゲットデータを、空いているキャッシュラインに保存することができる。
【0125】
一方、セットアドレス(Set add)が示すセットのキャッシュデータがいずれも有効である場合(全てのキャッシュラインにキャッシュデータが保存されている場合)、タグデータそれぞれの上位Kビットと、タグアドレスの上位Kビットとの差値により、当該タグデータに対応するキャッシュデータを、アップデート候補として決定することができる(S1240)。
【0126】
例えば、キャッシュメモリ・システム100は、キャッシュミスと判断される場合、出力されたタグデータそれぞれに対して、タグデータの上位Kビット(tagway[N−1:N−K])と、タグアドレスの上位Kビット(Tag add[N−1:N−K])との差値が臨界値超過である場合、当該タグデータに対応するキャッシュデータを、アップデート候補に含める。一方、タグデータの上位Kビット(tagway[N−1:N−K])と、タグアドレスの上位Kビット(Tag add[N−1:N−K])との差値が臨界値以下である場合、当該タグデータに対応するキャッシュデータを、アップデート候補から除外することができる。
【0127】
キャッシュメモリ・システム100は、決定されたアップデート候補のうちいずれか1つのキャッシュデータを削除し、新たなデータでアップデートすることができる(S1250)。
【0128】
キャッシュメモリ・システム100は、キャッシュミスと判断される場合、キャッシュミス信号を出力し、メインメモリ200からターゲットデータを受信することができる。キャッシュメモリ・システム100は、決定されたアップデート候補のうちいずれか1つのキャッシュデータを削除し、メインメモリ200から受信したデータでアップデートすることができる。
【0129】
また、本発明の一実施形態によるキャッシュメモリ・システム100は、セットアドレスが同一である複数のデータリクエストを受信することができる。そのような場合、キャッシュメモリ・システム100は、複数のデータそれぞれに対して、
図10及び
図11で説明したように、タグアドレス及びセットアドレスが示すセットに含まれるタグデータそれぞれを比較することができる。また、キャッシュメモリ・システム100は、複数のデータそれぞれに対して、
図10及び
図11で説明したように、タグアドレスの上位Kビットと、タグデータそれぞれの上位Kビットとの差値を演算することができる。
【0130】
キャッシュメモリ・システム100は、キャッシュミスである場合、複数のデータそれぞれに対して、
図13に示されているように、ベクトル(hit_results_d[])を出力することができる。
【0131】
例えば、キャッシュメモリ・システム100が4個のデータを同時にリクエストされた場合、第1データに対応するベクトル(hit_results_d[0][M−1:0]=[0001])、第2データに対応するベクトル(hit_results_d[1][M−1:0]=[0000])、第3データに対応するベクトル(hit_results_d[2][M−1:0]=[1100]、)及び第4データに対応するベクトル(hit_results_d[3][M−1:0]=[0000])を出力することができる。
【0132】
そのとき、ベクトルの成分値が1を示せば、タグアドレスの上位Kビット(Tag add[N−1:N−K])と、当該ウェイのタグデータの上位Kビット(tagway[N−1:N−K])との差値が、臨界値以下であることを意味する。一方、ベクトルの成分値が0を示せば、タグアドレスの上位Kビット(Tag add[N−1:N−K])と、当該ウェイのタグデータの上位Kビット(tagway[N−1:N−K])との差値が、臨界値より大きいことを意味する。
【0133】
それにより、キャッシュメモリ・システム100は、ベクトルの成分値に基づいて、複数のデータそれぞれに対するアップデート候補を決定することができる。例えば、ベクトルの成分値が0である場合(当該ウェイのタグデータの上位Kビットと、タグアドレスの上位Kビットとの差値が臨界値より大きい場合)、キャッシュメモリ・システム100は、外部からリクエストされたデータと、当該タグデータに対応するキャッシュデータは、空間的地域性がないと判断することができる。
【0134】
それにより、キャッシュメモリ・システム100は、ベクトル(hit_result_d[])の成分のうち「0」を示す成分に対応するウェイのキャッシュデータを、アップデート候補として決定することができる。
【0135】
図13を参照すれば、キャッシュメモリ・システム100は、第1データに対して、第1ウェイに対応するキャッシュデータ(第1キャッシュデータ)、第2ウェイに対応するキャッシュデータ(第2キャッシュデータ)、及び第3ウェイに対応するキャッシュデータ(第3キャッシュデータ)を、第1データに対するアップデート候補として決定することができる。また、キャッシュメモリ・システム100は、第2データ及び第4データに対して、第1ウェイないし第4ウェイそれぞれに対応するキャッシュデータ(第1キャッシュデータないし第4キャッシュデータ)を、第2データ及び第4データに対するアップデート候補として決定することができ、第3データに対して、第1キャッシュデータ及び第2キャッシュデータを、第3データに対するアップデート候補として決定することができる。
【0136】
複数のデータそれぞれに対して、アップデート候補が決定されれば、キャッシュメモリ・システム100は、複数のデータに対して、アップデート候補として決定された回数が最多であるキャッシュデータを削除し、新たなデータでアップデートすることができる。
アップデート候補のうち、アップデート候補として決定された回数が最多であるキャッシュデータを選択する方法については、
図9で詳細に説明したので、具体的な説明は省略する。
【0137】
また、キャッシュメモリ・システム100は、複数のベクトルが出力される場合、複数のベクトルの成分値をウェイ別に合算することができる。そのとき、キャッシュメモリ・システム100は、複数のウェイのうち合算値が最小であるウェイを選択することができ、選択されたウェイに対応するキャッシュデータを削除し、新たなデータでアップデートすることができる。
【0138】
アップデート候補のうちウェイ別に合算値に基づいて、キャッシュデータを選択する方法についても、
図9で詳細に説明したので、具体的な説明は省略する。
【0139】
本発明によるキャッシュメモリ・システム及びその動作方法は、前述のように説明された実施形態の構成及び方法が限定されるように適用されるものではなく、前記実施形態は、多様な変形が行われるように、各実施形態の全部または一部が選択的に組み合わされて構成される。
【0140】
一方、本発明のキャッシュメモリ・システム及びその動作方法は、コンピュータで読み取り可能な記録媒体に、コンピュータで読み取り可能なコードとして具現化することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取り可能なデータが保存される全ての種類の記録装置を含む。コンピュータで読み取り可能な記録媒体の例としては、ROM(read only memory)、RAM(random access memory)、CD(compact disc)−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ保存装置などがあり、またインターネットを介した転送のようなキャリアウェーブの形態で具現化されるものも含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークに接続されたコンピュータシステムに分散され、分散方式でプロセッサで読み取り可能なコードが保存されて実行される。
【0141】
以上、本発明の実施形態について図示して説明したが、本発明は、前述の特定実施形態に限定されるものではなく、特許請求の範囲で請求する本発明の要旨を外れることなしに、当該発明が属する技術分野における当業者によって、多様な変形実施が可能であることは言うまでもなく、そのような変形実施は、本発明の技術的思想や展望から個別的に理解されるものではない。