JP3900090B2 - キャッシュ縮退制御方法およびキャッシュメモリ - Google Patents
キャッシュ縮退制御方法およびキャッシュメモリ Download PDFInfo
- Publication number
- JP3900090B2 JP3900090B2 JP2003052703A JP2003052703A JP3900090B2 JP 3900090 B2 JP3900090 B2 JP 3900090B2 JP 2003052703 A JP2003052703 A JP 2003052703A JP 2003052703 A JP2003052703 A JP 2003052703A JP 3900090 B2 JP3900090 B2 JP 3900090B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- cache
- data
- array
- value
- 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 - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明はキャッシュメモリに関し、特に縮退機能を有するキャッシュメモリに関する。
【0002】
【従来の技術】
キャッシュメモリは、高速なプロセッサにおいてプロセッサから主記憶データのアクセス性能を向上させるために用いられている。基本的なライトスルー方式のキャッシュメモリの動作を、図5のブロック図を参照して説明する。
【0003】
図示しない命令発行制御部からデータロードの要求が発行された場合、キャッシュメモリは、リクエストとロードアドレスを受信する。ロードアドレスは、タグアドレス(TAG)、インデックスアドレス(index)、オフセットアドレス(BL_offset)の3つの部分に分類される。
【0004】
キャッシュメモリは、まず、インデックスアドレスを参照してアドレスアレイ1を読み出す。アドレスアレイ1にはアドレスタグ(TAG)とともに有効ビット(V)が格納されている。アドレスアレイ1から読み出したデータの有効ビットが点灯していた場合、キャッシュメモリは、アドレスアレイ1から読み出したアドレスタグ(以下、登録タグと呼ぶ)と、命令発行制御部から受信したアドレスタグ(以下、受信タグと呼ぶ)とをタグ比較器7において比較する。受信タグがアドレスアレイ1に登録されている登録タグと一致する場合、キャッシュメモリは、命令制御部から受信したインデックスアドレスとオフセットアドレスを加算器6により連結してデータアレイ2のエントリアドレスを生成し、主記憶上と同一のデータをデータアレイ2から読み出して図示しない演算部へ返却する。
【0005】
また、受信タグがアドレスアレイ1に登録されている登録タグと不一致となる場合、キャッシュメモリは、主記憶データの対象コピーを保持していないと判断し、図示しない主記憶制御部へデータロード要求を送出する。主記憶制御部から要求データが返却されると、キャッシュメモリは、アドレスアレイ1上の該当ブロックの有効ビットを点灯させるとともに、アドレスアレイ1にアドレスタグを、データアレイ2に前記返却データを書き込み、また要求されたデータを演算部へ返却する。アドレスアレイ1から読み出したアドレスタグの有効ビットが点灯していない場合も前記と同様の動作を行う。
【0006】
他方、命令発行制御部からデータストアの要求が発行された場合、キャッシュメモリは、リクエストとストアアドレスとストアデータを受信する。ロード要求と同様にストアアドレスのインデックスアドレスを参照し、アドレスアレイ1から有効ビットと登録タグを読み出す。アドレスアレイ1から読み出した有効ビットが点灯している場合、アドレスアレイ1に登録された登録タグとストアアドレスの受信タグを比較し、一致する場合は主記憶制御部にストア要求を出力するとともに対応するデータアレイ2のエントリを更新する。またアドレスアレイ1から読み出したエントリの登録タグとストアアドレスの受信タグが一致しない場合や、Vビットが点灯していない場合は主記憶制御部へのみストア要求を出力する。
【0007】
このような、キャッシュメモリは、一般的に容量の大きなメモリマクロを使用しているが、容量の増加に伴い歩留まりが悪化することが考えられる。近年プロセッサとキャッシュメモリが1チップ化されるため、特に1チップ化されたLSIにおいてはキャッシュ不良によるLSIの歩留まりが低下し、廃棄するLSIが多くなることが考えられる。
【0008】
この要請に応えるために、アドレスアレイの各エントリ内にそのエントリが使用不能であるか否かを示すデグレードビットを設け、故障の検出されたエントリのデグレードビットを点灯させて、以後、そのエントリにマッピングされる主記憶アドレスに関しては、常に主記憶からデータをロードする縮退動作を行う技術が提案されている(例えば、特許文献1参照)。
【0009】
また、メモリの縮退制御方法として、メモリのエラー部分を冗長メモリで代替する手法が提案されている(例えば、特許文献2参照)。
【0010】
【特許文献1】
特開平4−273348号公報
【特許文献2】
特開昭58−169400号公報
【0011】
【発明が解決しようとする課題】
しかしながら、特許文献1に記載の技術では、デグレードビットの点灯したエントリにマッピングされる主記憶アドレスについては、常に主記憶からデータをロードしなければならず、参照の局所性によって、デグレードビットの点灯したエントリにマッピングされる主記憶アドレスが連続してアクセスされる状況が発生すると、性能低下が長く継続する可能性がある。他方、特許文献2に記載の技術をキャッシュの縮退制御に適用する場合、冗長エントリを予めアドレスアレイやデータアレイに作り込んでおく必要があり、キャッシュメモリのハードウェア量が増加し、サイズが増大するという問題がある。
【0012】
そこで本発明の目的は、キャッシュ縮退時における性能低下を比較的小さく抑えることのできるキャッシュ縮退制御方法およびキャッシュメモリを提供することにある。
【0013】
また、本発明の別の目的は、縮退制御に必要なハードウェア量を比較的少なく抑えることのできるキャッシュ縮退制御方法およびキャッシュメモリを提供することにある。
【0014】
【課題を解決するための手段】
本発明のキャッシュ縮退制御方法は、主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイとを含むダイレクトマップ方式のキャッシュメモリの前記アドレスアレイか前記データアレイのある箇所に固定的な障害が発生したために、インデックスアドレスの最上位ビットにより識別されるキャッシュメモリの2つの領域のうち、前記障害が発生した箇所を含むキャッシュメモリの半分の領域を切り離し、残り半分の正常な領域を用いてキャッシュメモリの運用を継続するキャッシュ縮退制御方法であって、 (1) 前記残り半分の正常な領域の各キャッシュエントリにマッピングされる主記憶アドレスのインデックスアドレスの最上位ビットの値を、前記残り半分の正常な領域に含まれる全てのキャッシュエントリについて、同一であるようにマッピングし、 (2) 若し、それまで前記残り半分の正常な領域に含まれる各キャッシュエントリにマッピングされている主記憶アドレスのインデックスアドレスの最上位ビットの値と異なる値を持つインデックスアドレスの最上位ビットを有する主記憶アドレスを前記残り半分の正常な領域のいずれかのキャッシュエントリに新たに登録する場合には、 (2-1) 前記残り半分の正常な領域に含まれる全てのキャッシュエントリを無効化して、 (2-2) 新たにキャッシュエントリに登録するデータの主記憶アドレスのインデックスアドレスの最上位ビットの新たな値により、前記マッピングをし直すことを特徴とする。
【0015】
本発明のキャッシュメモリは、主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイとを含むダイレクトマップ方式のキャッシュメモリであって、前記アドレスアレイか前記データアレイのある箇所に固定的な障害が発生したことを検出し、インデックスアドレスの最上位ビットにより識別されるキャッシュメモリの2つの領域のうち、前記障害が発生した箇所を含むキャッシュメモリの半分の領域を切り離すエラー制御部と、残り半分の正常な領域を用いてキャッシュメモリの運用を継続するために、前記残り半分の正常な領域の各キャッシュエントリにマッピングされる主記憶アドレスのインデックスアドレスの最上位ビットの値を、前記残り半分の正常な領域に含まれる全てのキャッシュエントリについて、同一であるようにマッピングする縮退制御部と、若し、それまで前記残り半分の正常な領域に含まれる各キャッシュエントリにマッピングされている主記憶アドレスのインデックスアドレスの最上位ビットの値と異なる値を持つインデックスアドレスの最上位ビットを有する主記憶アドレスを前記残り半分の正常な領域のいずれかのキャッシュエントリに新たに登録する場合には、前記残り半分の正常な領域に含まれる全てのキャッシュエントリを無効化して、新たにキャッシュエントリに登録するデータの主記憶アドレスのインデックスアドレスの最上位ビットの新たな値により、前記マッピングをし直すキャッシュ制御部とを備えることを特徴とする。
【0016】
【作用】
本発明にあっては、データアレイおよびアドレスアレイの何れかの分割領域に障害が発生すると、その障害領域を以後キャッシュ領域には使用せず、その代わりに、他の正常な分割領域を代替領域として使用する。つまり、他の正常な分割領域に、障害領域に対応する主記憶アドレスをマッピングし、正常な分割領域を障害領域に対応する主記憶アドレスのキャッシュ領域として使用する。但し、他の正常な分割領域を障害領域の代替領域として使うのは、障害領域に対応する主記憶アドレスへのアクセスが発生している場合だけであり、障害領域の代替領域として使用している他の正常な分割領域に対応する主記憶アドレスへのアクセスが発生すると、他の正常な分割領域は本来の分割領域のために使用する。つまり、他の正常な分割領域に、それに対応する主記憶アドレスをマッピングし直し、キャッシュ領域として使用する。そして、再び障害領域に対応する主記憶アドレスへのアクセスが発生すると、再度マッピングをやり直す。
【0017】
【発明の第1の実施の形態】
図1を参照すると、本発明の第1の実施の形態にかかるキャッシュメモリは、主記憶のデータの写しを記憶するデータアレイ2と、データアレイ2内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビット(V)を記憶するアドレスアレイ1と、キャッシュメモリ全体の制御を司る制御部8とを含んで構成される。制御部8は、アドレスアレイ1とデータアレイ2を、それぞれ同サイズの上下2つの領域11、12および21、22に分割し、何れかの分割領域に障害が発生したときに障害領域を切り離し、以後、その障害領域は使用せず、代わりに、他の正常な分割領域を代替領域として使用することで、縮退状態でキャッシュ動作を継続する機能を有しており、エラー制御部3、縮退制御部4、キャッシュ制御部5、加算器6およびタグ比較器7から構成されている。
【0018】
エラー制御部3には、アドレスアレイ1から読み出された登録タグおよびデータアレイ2から読み出されたデータが入力されており、パリティチェックによってアドレスアレイ1およびデータアレイ2のメモリ領域に障害が発生したか否かを検出し、障害検出時には、障害箇所がアドレスアレイ1の領域11、12の何れであるか、データアレイ2の領域21、22の何れであるかを、アドレスアレイ1およびデータアレイ2に加えられている参照アドレスの最上位ビットが1であったか、0であったかによって特定する。そして、アドレスアレイ1またはデータアレイ2の何れかの領域に障害を検出すると、アドレスアレイ1の全エントリの有効ビットをリセットし、障害情報を縮退制御部4およびキャッシュ制御部5へ通知する。通知する障害情報は、本実施の形態の場合は2ビットで構成され、上位1ビットは縮退状態を示す1に設定され、下位1ビットは正常な分割領域を示す値に設定される。つまり、障害箇所が上側領域11、21のときは正常な領域が下側領域12、22であることを示す値1に、障害箇所が下側領域12、22のときは正常な領域が上側領域であることを示す値0に、それぞれ設定される。
【0019】
縮退制御部4は、1ビットの縮退フラグ(D)41、1ビットの有効ポジションフラグ(P)42、1ビットのカレントアドレスフラグ(C)43の3つのフラグを有する。フラグD、P、Cの初期値は0であり、フラグDには、エラー制御部3から通知される2ビットの障害情報の上位1ビットの値が設定され、フラグPには障害情報の下位1ビットの値が設定される。つまり、アドレスアレイ1またはデータアレイ2に障害が発生したとき、フラグDは値1に設定され、フラグPはアドレスアレイ1またはデータアレイ2の上下の領域のうち上側が正常であれば値0に、下側が正常であれば値1に設定される。また、フラグCには、キャッシュ制御部5の主記憶からのデータロード時に、ロードしたデータのアドレスを構成するインデックスアドレスの最上位1ビットの値が設定される。
【0020】
また縮退制御部4は、フラグPとフラグCの排他的論理和をとるEX−OR回路44、EX−OR回路44の出力とフラグDの論理積をとるアンド回路45、キャッシュ制御部5に保持されている処理中の受信アドレスにおけるインデックスアドレスの最上位ビット52とフラグCの排他的論理和をとるEX−OR回路46、EX−OR回路46の出力とフラグDの論理積をとり、キャッシュ制御部5へ出力するアンド回路47と、前記受信アドレスのインデックスアドレスのうち、最上位ビット52だけを反転する否定回路48と、否定回路48の出力および前記受信アドレスのインデックスアドレスを入力し、アンド回路45の出力が0のときは前記受信アドレスのインデックスアドレスを選択し、アンド回路45の出力が1のときは否定回路48の出力を選択して、それぞれアドレスアレイ1、加算器6およびエラー制御部3に出力するセレクタ49とを有する。
【0021】
キャッシュ制御部5は、図示しない命令発行制御部と主記憶制御部とに接続されており、命令発行制御部から受信したデータロード要求、データストア要求の処理を行う。データロード要求はリクエストとロードアドレスを含み、データストア要求はリクエストとストアアドレスとストアデータを含む。ロードアドレスおよびストアアドレスは、図1の参照符号51に示されるように、タグアドレス(TAG)、インデックスアドレス(index)、オフセットアドレス(BL_offset)に分割される。タグアドレス(つまり受信タグ)は、タグ比較器7に出力され、インデックスアドレスは、縮退制御部4において必要に応じて最上位1ビットの反転処理が施されてアドレスアレイ1、加算器6およびエラー制御部3に出力される。オフセットアドレスは、加算器6に出力される。
【0022】
キャッシュ制御部5は、受信アドレス(ロードアドレス、ストアアドレス)に基づくキャッシュ検索過程において、タグ比較器7からキャッシュヒット信号を受信すると、データロード要求の場合はヒットしたデータアレイ2中のデータを図示しない演算部に返却し、データストア要求の場合はヒットしたデータアレイ2中のデータを更新する。他方、タグ比較器7からキャッシュミス信号を受信すると、データロード要求の場合は主記憶からデータをロードしてアドレスアレイ1およびデータアレイ2を更新するとともにデータを演算部に返却し、データストア要求の場合は主記憶データのみを書き換える。また、キャッシュ検索過程において、エラー制御部3から障害情報が出力された場合、および縮退制御部4のアンド回路47の出力が値1になって再マッピングが要求された場合、アドレスアレイ1の全エントリの有効ビットをリセットし、キャッシュミス時と同様の処理を行う。
【0023】
図2は制御部8の処理例を示すフローチャートであり、図示しない命令発行制御部からデータロード要求を受信した場合の処理を示す。以下、図1および図2を参照して、本実施の形態にかかるキャッシュメモリのデータロード要求時の処理を説明する。なお、理解を容易にするために、インデックスアドレスは2ビットとし、アドレスアレイ1のエントリ数は4つで、上側領域11はインデックスアドレス00、01に対応する2つのエントリを含み、下側領域12はインデックスアドレス10、11に対応する2つのエントリを含むものとする。
【0024】
(1)まず、アドレスアレイ1およびデータアレイ2に障害が発生していない状況、つまりキャッシュが縮退していない状況を考える。このとき、フラグD、P、Cは全て値0に初期設定されている。
【0025】
キャッシュ制御部5は、図示しない命令発行制御部からデータロード要求を受信すると(S1)、ロードアドレスの受信タグをタグ比較器7へ、インデックスアドレスを縮退制御部4へ、オフセットアドレスを加算器6へそれぞれ出力する。ここで、説明の便宜上、インデックスアドレスは値00と仮定する。
【0026】
縮退制御部4は、フラグDが値0であるため(S2でNo)、キャッシュ制御部5から出力されたインデックスアドレス00をそのままセレクタ49を通じてアドレスアレイ1、加算器6およびエラー制御部3に出力する。これにより、アドレスアレイ1の00エントリに格納された有効ビットと登録タグが読み出され(S3)、エラー制御部3とタグ比較器7へ出力される。エラー制御部3は、受信した登録タグのパリティチェックを行い(S4)、タグ比較器7は、受信した登録タグとキャッシュ制御部5から送られてきたロードアドレスの受信タグとを比較する(S5)。
【0027】
タグ比較器7において、有効ビットが点灯しており、且つ登録タグと受信タグとの一致が検出されると(S5でYes)、加算器6で生成されたデータアレイ2のアクセスアドレス(インデックスアドレス00+オフセットアドレス)によってデータアレイ2から登録データが読み出される(S6)。エラー制御部3は、データアレイ2から読み出された登録データにエラーがないかどうかを調べる(S7)。エラーが無い場合、データアレイ2から読み出された登録データは、有効なデータとして図示しない演算部へ返却される(S8)。
【0028】
他方、タグ比較器7において、有効ビットが点灯していないか、或いは登録タグと受信タグとの不一致が検出されると(S5でNo)、タグ比較器7からキャッシュ制御部5にキャッシュミス信号が出力される(S9)。キャッシュ制御部5は、受信ロードアドレス51に基づいて、図示しない主記憶制御部へデータロード要求を送出する(S10)。そして、主記憶制御部から要求データが返却されると、キャッシュ制御部5は、縮退制御部4のフラグCに、受信ロードアドレス51のインデックスアドレスの最上位ビットの値0を設定し(S11)、主記憶から返却されたデータをデータアレイ2に登録するとともにそのタグアドレスと点灯させたVビットをアドレスアレイ1に登録する。このとき、フラグDの値は0であるため(S12でNo)、ロードアドレスの受信インデックスの値00がそのままアドレスアレイ1に与えられており、タグアドレスはアドレスアレイ1の上側領域11におけるインデックスアドレス00に対応するエントリに登録され(S15)、またデータもデータアレイ2の上側領域21のエントリに登録される(S16)。
【0029】
(2)次に、(1)と同様にインデックスアドレスが値00であるデータロード要求時にアドレスアレイ1またはデータアレイ2の障害が検出された場合の動作を説明する。エラー制御部3は、アドレスアレイ1から読み出された登録タグにパリティエラーを検出するか(S4でNo)、データアレイ2から読み出されたデータにパリティエラーを検出すると(S7でNo)、アドレスアレイ1の全エントリの有効ビットを全てリセットして不点灯状態とする(S20)。つまり、キャッシュフラッシュを行う。なお、エラー制御部3の動作に関し、1回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるか、複数回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるかは、任意である。
【0030】
エラー制御部3は、固定的な障害を検出すると、アドレスアレイ1およびデータアレイ2に加わっているインデックスアドレスの最上位ビットの値0により、アドレスアレイ1側での障害検出時には上側領域11に、データアレイ2側での障害検出時には上側領域21にそれぞれ障害が発生したと判断し、値11の障害情報を縮退制御部4およびキャッシュ制御部5へ通知する。
【0031】
縮退制御部4は、障害情報の上位ビットの値1をフラグDに設定し、下位ビットの値1をフラグPに設定する(S21)。また、キャッシュ制御部5は、タグ比較器7からキャッシュミス信号を受信した場合と同様に、主記憶制御部にデータロード要求を出してデータをロードし(S10)、受信インデックスアドレスの最上位ビットの値0をフラグCに設定し(S11)、アドレスアレイ1とデータアレイ2を更新する(S12〜S16)。このとき、フラグDの値は1で(S12でYes)、フラグPの値1とフラグCの値0とが相違するので(S13でno)、受信インデックスアドレスの値00が否定回路48で値10に変換されてセレクタ49を通じてアドレスアレイ1、加算器6に加えられるため、タグアドレスはアドレスアレイ1の下側領域12におけるインデックスアドレスの値10に対応するエントリに登録され、またデータもデータアレイ2の下側領域22のエントリに登録される。また、同時に主記憶からリードしたデータが演算部に返却される。
【0032】
次に、インデックスアドレスの値が同じ00のアドレスに対するデータロード要求が再び発行された場合を考える。この場合、フラグDの値が1になっており(S2でYes)、フラグCの値0と受信インデックスの最上位ビットの値0とが一致し(S17でYes)、フラグPの値1とフラグCの値0とが相違するので(S18でNo)、受信インデックスアドレスの値00が縮退制御部4で値10に変換されてアドレスアレイ1および加算器6に出力され、アドレスアレイ1の10のエントリがアクセスされることになる(S3)。このため、アドレスアレイ1から読み出された登録タグと受信タグとが一致していれば(S5でYes)、データアレイ2に登録されたデータが有効なデータとして演算部へ出力される(S6〜S8)。
【0033】
次に、インデックスアドレスが値01のアドレスに対するデータロード要求が発行された場合を想定する。このとき、フラグDの値が1になっており(S2でYes)、フラグCの値0と受信インデックスの最上位ビットの値0とが一致し(S17でYes)、フラグPの値1とフラグCの値0とが相違するので(S18でNo)、受信インデックスアドレスの値01が縮退制御部4で値11に変換されてアドレスアレイ1および加算器6に出力され、アドレスアレイ1の11のエントリがアクセスされることになる(S3)。アドレスアレイ1の11のエントリのVビットは前述したエラー制御部3によって不点灯状態にリセットされているため、キャッシュミスとなり(S5でNo、S9)、キャッシュ制御部5により主記憶制御部からデータがロードされ(S10)、受信インデックスアドレスの最上位ビットの値0をフラグCに設定し(S11)、アドレスアレイ1とデータアレイ2を更新する(S12〜S16)。このとき、フラグDの値は1で(S12でYes)、フラグPの値1とフラグCの値0とが相違するので(S13でNo)、受信インデックスアドレスの値01が否定回路48で値11に変換されてセレクタ49を通じてアドレスアレイ1、加算器6に加えられるため、タグアドレスはアドレスアレイ1の下側領域12におけるインデックスアドレスの値11に対応するエントリに登録され、またデータもデータアレイ2の下側領域22のエントリに登録される。また、同時に主記憶からリードしたデータが演算部に返却される。
【0034】
このようにして、アドレスアレイ1およびデータアレイ2の上側領域11、21に障害が検出されると、正常な下側領域12、22に、インデックスアドレスの値が00、01となる主記憶アドレスがマッピングされ、キャッシュメモリの動作が継続される。
【0035】
(3)次に、アドレスアレイ1およびデータアレイ2の正常な下側領域12、22に、インデックスアドレス値00、01の主記憶アドレスがマッピングされている状態で、インデックスアドレスが値11のアドレスに対するデータロード要求が発行された場合を想定する。この場合、フラグDの値が1になっており(S2でYes)、フラグCの値0と受信インデックスの最上位ビットの値1とが一致しないので(S17でNo)、縮退制御部4のアンド回路48の出力値が1となり、キャッシュ制御部5はアドレスアレイ1の全エントリのVビットを全て不点灯状態にリセットする(S22)。つまり、キャッシュフラッシュを行う。そして、キャッシュ制御部5は、タグ比較器7からキャッシュミス信号を受信した場合と同様に、主記憶制御部にデータロード要求を出してデータをロードし(S10)、受信インデックスアドレスの最上位ビットの値1をフラグCに設定し(S11)、アドレスアレイ1とデータアレイ2を更新する(S12〜S16)。このとき、フラグDの値は1で(S12でYes)、フラグPの値1とフラグCの値1とが一致するので(S13でYes)、受信インデックスアドレスの値11がそのままセレクタ49を通じてアドレスアレイ1、加算器6に加えられるため、タグアドレスはアドレスアレイ1の下側領域12におけるインデックスアドレスの値11に対応するエントリに登録され、またデータもデータアレイ2の下側領域22のエントリに登録される。また、同時に主記憶からリードしたデータが演算部に返却される。
【0036】
このようにして、アドレスアレイ1およびデータアレイ2の正常な下側領域12、22に、インデックスアドレス値00、01の主記憶アドレスがマッピングされている状態で、インデックスアドレスが値11または10のアドレスに対するデータロード要求が発行されると、正常な下側領域12、22に、インデックスアドレスの値が11、10となる主記憶アドレスがマッピングされ、キャッシュメモリの動作が継続される。
【0037】
図3は制御部8の処理例を示すフローチャートであり、図示しない命令発行制御部からデータストア要求を受信した場合の処理を示す。以下、図1および図3を参照して、本実施の形態にかかるキャッシュメモリのデータストア要求時の処理を説明する。なお、データロード要求時における説明と同様に、インデックスアドレスは2ビットとし、アドレスアレイ1のエントリ数は4つで、上側領域11はインデックスアドレス00、01に対応する2つのエントリを含み、下側領域12はインデックスアドレス10、11に対応する2つのエントリを含むものとする。
【0038】
(4)まず、アドレスアレイ1およびデータアレイ2に障害が発生していない状況、つまりキャッシュが縮退していない状況を考える。このとき、フラグD、P、Cは全て値0に初期設定されている。
【0039】
キャッシュ制御部5は、図示しない命令発行制御部からデータストア要求を受信すると(S31)、図示しない主記憶制御部にデータストア要求を出力する(S32)。次に、ストアアドレスの受信タグをタグ比較器7へ、インデックスアドレスを縮退制御部4へ、オフセットアドレスを加算器6へそれぞれ出力する。ここで、説明の便宜上、インデックスアドレスは値00と仮定する。
【0040】
縮退制御部4は、フラグDが値0であるため(S33でNo)、キャッシュ制御部5から出力されたインデックスアドレスの値00をそのままセレクタ409を通じてアドレスアレイ1、加算器6およびエラー制御部3に出力する。これにより、アドレスアレイ1の00エントリに格納された有効ビットと登録タグが読み出され(S34)、エラー制御部3とタグ比較器7へ出力される。エラー制御部3は、受信した登録タグをチェックし(S35)、タグ比較器7は、受信した登録タグとキャッシュ制御部5から送られてきたストアアドレスの受信タグとを比較する(S36)。
【0041】
タグ比較器7において、有効ビットが点灯しており、且つ登録タグと受信タグとの一致が検出されると(S36でYes)、加算器6で生成されたデータアレイ2のアクセスアドレス(インデックスアドレス00+オフセットアドレス)が示すデータアレイ2のエントリにストアデータが書き込まれる(S37)。アドレスアレイ1から読み出したVビットが点灯していない場合や、登録タグと受信タグが一致しない場合は、そのまま処理を終える。
【0042】
(5)次に、(4)と同様にインデックスアドレスが値00であるデータストア要求時にアドレスアレイ1の障害が検出された場合の動作を説明する。エラー制御部3は、アドレスアレイ1から読み出された登録タグにパリティエラーを検出すると(S35でNo)、アドレスアレイ1の全エントリの有効ビットを全てリセットして不点灯状態とする(S38)。つまり、キャッシュフラッシュを行う。なお、データロード要求時と同様にエラー制御部3の動作に関し、1回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるか、複数回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるかは、任意である。
【0043】
エラー制御部3は、固定的な障害を検出すると、アドレスアレイ1に加わっているインデックスアドレスの最上位ビットの値0により、アドレスアレイ1の上側領域11に障害が発生したと判断し、値11の障害情報を縮退制御部4へ通知する。縮退制御部4は、障害情報の上位ビットの値1をフラグDに設定し、下位ビットの値1をフラグPに設定する(S39)。そして、処理を終える。
【0044】
(6)次に、フラグDの値が1になっている縮退状態において、データストア要求が発生した場合の処理を説明する。この場合、フラグDが値1なので(S33でYes)、フラグCの値とストアアドレスにおけるインデックスアドレスの最上位ビットの値とが一致するか否かが縮退制御部4のEX−OR回路46で調べられる(S40)。若し、両者が一致しないときは、上書きすべきデータはキャッシュに存在しないので、処理を終える。両者が一致する場合、フラグCの値とフラグPの値とが一致するか否かが縮退制御部4のEX−OR回路44で調べられる(S41)。若し、両者が一致するときは、受信インデックスアドレスがそのまま縮退制御部4からアドレスアレイ1、加算器6およびエラー制御部3へ出力され、不一致のときは、受信インデックスアドレスの最上位ビットの値が縮退制御部4で反転されて(S42)、アドレスアレイ1、加算器6およびエラー制御部3へ出力される。以降、前述したと同様の動作が行われる(S34〜39)。
【0045】
【発明の第2の実施の形態】
第1の実施の形態では、縮退制御部4のフラグPに、アドレスアレイ1およびデータアレイ2の分割領域11、12、21、22のうち、正常な領域を示す値を設定したが、本実施の形態では、フラグPに障害領域を示す値を設定する。本実施の形態にかかるキャッシュメモリの要部ブロック図を図4に示す。図1に示した第1の実施の形態と相違するところは、参照符号101のフラグPに、アドレスアレイ1またはデータアレイ2の上側領域11、21に障害が発生した場合には値0を設定し、反対に下側領域12、22に障害が発生した場合には値1を設定することと、図1のEX−OR回路44に代えてアンド回路102を備えている点であり、その他は第1の実施の形態と同じである。
【0046】
例えば、アドレスアレイ1の上側領域11に障害が発生したため、下側領域12を使って縮退動作しているとき、フラグDは値1、フラグPは値0に設定される。そして、正常な下側領域12にインデックスアドレスが00または01のアドレスがマッピングされているとき、フラグCには値0が設定される。この状態で、インデックスアドレスが00または01の受信アドレスをキャッシュ制御部5から受けると、フラグPとフラグCの値が一致しているため、アンド回路102、45の出力値が1であり、セレクタ49は、インデックスアドレスの最上位ビットを反転し、10または11に変換して出力する。また、インデックスアドレスが10または11の受信アドレスをキャッシュ制御部5から受けると、第1の実施の形態と同様にアンド回路47の出力が1となり、キャッシュフラッシュが行われて、再マッピングされる。
【0047】
反対に、正常な下側領域12にインデックスアドレスが10または11のアドレスがマッピングされているとき、フラグCには値1が設定される。この状態で、インデックスアドレスが10または11の受信アドレスをキャッシュ制御部5から受けると、フラグPとフラグCの値が不一致で、アンド回路102、45の出力値は0のため、セレクタ49は、インデックスアドレスの最上位ビットを反転せず、そのまま出力する。また、インデックスアドレスが00または01の受信アドレスをキャッシュ制御部5から受けると、第1の実施の形態と同様にアンド回路47の出力が1となり、キャッシュフラッシュが行われて、再マッピングされる。
【0048】
以上本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。例えば、上記の実施の形態ではアドレスアレイとデータアレイを上下に2分割したが、4分割、8分割、…、することも可能である。また、本発明はキャッシュのウェイ数にかかわらず適用可能であり、全ウェイを一括して縮退しても、本縮退機能をウェイ毎に個別に制御することも可能である。更に、アドレスアレイおよびデータアレイの障害検出はパリティチェック以外に、ECC訂正不可などによって検出することも可能である。
【0049】
【発明の効果】
以上説明したように本発明によれば以下のような効果が得られる。
【0050】
キャッシュ縮退時における性能低下を比較的小さく抑えることができる。その理由は、キャッシュ縮退時であっても特許文献1に記載の技術のように特定の主記憶アドレスが常にキャッシュされない状況は発生しないからである。また、1つの正常な分割領域を、障害領域に対応する主記憶アドレスのマッピング用とその正常な分割領域に対応する主記憶アドレスのマッピング用とに切り替える際には一時的にキャッシュミスが多発するが、参照の局所性があるために、障害領域に対応する主記憶アドレスへのアクセスが発生したとき、以後、障害領域に対応する主記憶アドレスへのアクセスが集中する傾向があり、他方、障害領域の代替に使った分割領域に対応する主記憶アドレスへのアクセスが発生すると、以後、その分割領域に対応する主記憶アドレスへのアクセスが集中する傾向があるため、マッピングの切替頻度によるオーバーヘッドはそれほど大きくないからである。
【0051】
縮退制御に必要なハードウェア量を比較的少なく抑えることができる。その理由は、特許文献2のような冗長メモリが必要でなく、他の正常な分割領域を使用するからである。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態にかかるキャッシュメモリのブロック図である。
【図2】本発明の第1の実施の形態にかかるキャッシュメモリのデータロード要求時の処理例を示すフローチャートである。
【図3】本発明の第1の実施の形態にかかるキャッシュメモリのデータストア要求時の処理例を示すフローチャートである。
【図4】本発明の第2の実施の形態にかかるキャッシュメモリの要部ブロック図である。
【図5】キャッシュメモリの基本的な動作の説明に用いるブロック図である。
【符号の説明】
1…アドレスアレイ
2…データアレイ
3…エラー制御部
4…縮退制御部
5…キャッシュ制御部
6…加算器
7…タグ比較器
8…制御部
Claims (2)
- 主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイとを含むダイレクトマップ方式のキャッシュメモリの前記アドレスアレイか前記データアレイのある箇所に固定的な障害が発生したために、インデックスアドレスの最上位ビットにより識別されるキャッシュメモリの2つの領域のうち、前記障害が発生した箇所を含むキャッシュメモリの半分の領域を切り離し、残り半分の正常な領域を用いてキャッシュメモリの運用を継続するキャッシュ縮退制御方法であって、 (1) 前記残り半分の正常な領域の各キャッシュエントリにマッピングされる主記憶アドレスのインデックスアドレスの最上位ビットの値を、前記残り半分の正常な領域に含まれる全てのキャッシュエントリについて、同一であるようにマッピングし、 (2) 若し、それまで前記残り半分の正常な領域に含まれる各キャッシュエントリにマッピングされている主記憶アドレスのインデックスアドレスの最上位ビットの値と異なる値を持つインデックスアドレスの最上位ビットを有する主記憶アドレスを前記残り半分の正常な領域のいずれかのキャッシュエントリに新たに登録する場合には、 (2-1) 前記残り半分の正常な領域に含まれる全てのキャッシュエントリを無効化して、 (2-2) 新たにキャッシュエントリに登録するデータの主記憶アドレスのインデックスアドレスの最上位ビットの新たな値により、前記マッピングをし直すことを特徴とするキャッシュ縮退制御方法。
- 主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイとを含むダイレクトマップ方式のキャッシュメモリであって、前記アドレスアレイか前記データアレイのある箇所に固定的な障害が発生したことを検出し、インデックスアドレスの最上位ビットにより識別されるキャッシュメモリの2つの領域のうち、前記障害が発生した箇所を含むキャッシュメモリの半分の領域を切り離すエラー制御部と、残り半分の正常な領域を用いてキャッシュメモリの運用を継続するために、前記残り半分の正常な領域の各キャッシュエントリにマッピングされる主記憶アドレスのインデックスアドレスの最上位ビットの値を、前記残り半分の正常な領域に含まれる全てのキャッシュエントリについて、同一であるようにマッピングする縮退制御部と、若し、それまで前記残り半分の正常な領域に含まれる各キャッシュエントリにマッピングされている主記憶アドレスのインデックスアドレスの最上位ビットの値と異なる値を持つインデックスアドレスの最上位ビットを有する主記憶アドレスを前記残り半分の正常な領域のいずれかのキャッシュエントリに新たに登録する場合には、前記残り半分の正常な領域に含まれる全てのキャッシュエントリを無効化して、新たにキャッシュエントリに登録するデータの主記憶アドレスのインデックスアドレスの最上位ビットの新たな値により、前記マッピングをし直すキャッシュ制御部とを備えることを特徴とするキャッシュメモリ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003052703A JP3900090B2 (ja) | 2003-02-28 | 2003-02-28 | キャッシュ縮退制御方法およびキャッシュメモリ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003052703A JP3900090B2 (ja) | 2003-02-28 | 2003-02-28 | キャッシュ縮退制御方法およびキャッシュメモリ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004264966A JP2004264966A (ja) | 2004-09-24 |
JP3900090B2 true JP3900090B2 (ja) | 2007-04-04 |
Family
ID=33117511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003052703A Expired - Fee Related JP3900090B2 (ja) | 2003-02-28 | 2003-02-28 | キャッシュ縮退制御方法およびキャッシュメモリ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3900090B2 (ja) |
-
2003
- 2003-02-28 JP JP2003052703A patent/JP3900090B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004264966A (ja) | 2004-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9836403B2 (en) | Dynamic cache allocation policy adaptation in a data processing apparatus | |
TWI592795B (zh) | 於低電壓操作期間之快取部分的停用 | |
US7496730B2 (en) | System and method for reducing the number of translation buffer invalidates an operating system needs to issue | |
US9003247B2 (en) | Remapping data with pointer | |
US20030154345A1 (en) | Multilevel cache system having unified cache tag memory | |
JP2005528695A (ja) | キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置 | |
JP2001507846A (ja) | ロックを伴うキャッシュ置換方法 | |
JP2005528694A (ja) | スレッド識別子に基づくキャッシュ追い出しを用いたマルチスレッド化キャッシュのための方法および装置 | |
JPS6135584B2 (ja) | ||
EP2926257B1 (en) | Memory management using dynamically allocated dirty mask space | |
US10423534B2 (en) | Cache memory | |
US20070240021A1 (en) | Method, system and program product for autonomous error recovery for memory devices | |
US6226763B1 (en) | Method and apparatus for performing cache accesses | |
JP3463292B2 (ja) | キャッシュ動作要求間の競合に応答して置換用の代替キャッシュ・エントリを選択する方法及びシステム | |
EP0823685A1 (en) | Cache memory capable of using faulty tag memory | |
JP4009304B2 (ja) | キャッシュメモリおよびキャッシュメモリ制御方法 | |
US9959212B2 (en) | Memory system | |
US8688952B2 (en) | Arithmetic processing unit and control method for evicting an entry from a TLB to another TLB | |
US6212616B1 (en) | Even/odd cache directory mechanism | |
JP3900090B2 (ja) | キャッシュ縮退制御方法およびキャッシュメモリ | |
US20070101044A1 (en) | Virtually indexed cache system | |
US20050091459A1 (en) | Flexible mechanism for enforcing coherency among caching structures | |
US20080104333A1 (en) | Tracking of higher-level cache contents in a lower-level cache | |
JP3953903B2 (ja) | キャッシュメモリ装置、及び、参照履歴のビット誤り検出方法 | |
US10915404B2 (en) | Persistent memory cleaning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060913 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060919 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061117 |
|
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: 20061205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061218 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120112 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130112 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |