(57)【要約】【課題】キャッシュ縮退時における性能低下を比較的小さく抑える。【解決手段】主記憶のデータの写しを記憶するデータアレイ２と、データアレイ２内のデータの主記憶上のアドレス情報および有効か否かを示す情報を記憶するアドレスアレイ１とを同サイズの２つの領域１１、１２、２１、２２に分割しておく。エラー制御部３、縮退制御部４およびキャッシュ制御部５等で構成される制御部８は、分割領域１１に障害が発生すると、障害領域１１を切り離し、以後、他の正常な分割領域１２を、障害領域１１に対応する主記憶アドレスへのアクセスが発生したときは障害領域１１に対応する主記憶アドレスのキャッシュ領域として使用し、分割領域１２に対応する主記憶アドレスへのアクセスが発生したときは分割領域１２に対応する主記憶アドレスのキャッシュ領域として使用する。【選択図】  図１
2004264966.tif 000002
【特許請求の範囲】
【請求項１】
主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイとを含むキャッシュメモリのキャッシュ縮退制御方法において、前記データアレイおよび前記アドレスアレイを同サイズの複数の領域に分割し、何れかの分割領域に障害が発生したときに障害領域を切り離し、以後、他の正常な分割領域を、前記障害領域に対応する主記憶アドレスへのアクセスが発生したときは前記障害領域に対応する主記憶アドレスのキャッシュ領域として使用し、前記他の正常な分割領域に対応する主記憶アドレスへのアクセスが発生したときは前記他の正常な分割領域に対応する主記憶アドレスのキャッシュ領域として使用することを特徴とするキャッシュ縮退制御方法。
【請求項２】
前記データアレイと前記アドレスアレイを、上位アドレス側と下位アドレス側に２分割することを特徴とする請求項１記載のキャッシュ縮退制御方法。
【請求項３】
主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイと、キャッシュメモリ全体の制御を司る制御部とを含むキャッシュメモリにおいて、前記制御部は、前記データアレイおよび前記アドレスアレイを同サイズの複数の領域に分割し、何れかの分割領域に障害が発生したときに障害領域を切り離し、以後、他の正常な分割領域を、前記障害領域に対応する主記憶アドレスへのアクセスが発生したときは前記障害領域に対応する主記憶アドレスのキャッシュ領域として使用し、前記他の正常な分割領域に対応する主記憶アドレスへのアクセスが発生したときは前記他の正常な分割領域に対応する主記憶アドレスのキャッシュ領域として使用するものであることを特徴とするキャッシュメモリ。
【請求項４】
前記制御部は、前記データアレイと前記アドレスアレイを、上位アドレス側と下位アドレス側に２分割するものであることを特徴とする請求項３記載のキャッシュメモリ。
【請求項５】
前記制御部は、前記アドレスアレイから読み出されたタグアドレスおよび前記データアレイから読み出されたデータのエラー検出を行ってその結果に基づき障害箇所を検出し、前記アドレスアレイの全エントリの有効ビットをリセットすると共に障害情報を生成するエラー制御部と、前記生成された障害情報と、前記他の正常な分割領域の現在のマッピング状態と、命令発行制御部から受信したデータロード要求およびデータストア要求中のインデックスアドレスとに基づいて、前記アドレスアレイおよび前記データアレイに加えるインデックスアドレスの変換と再マッピングの必要性を判断する縮退制御部と、前記データロード要求の処理中に前記縮退制御部から再マッピングが指示されたとき前記アドレスアレイの全エントリの有効ビットをリセットすると共に主記憶制御部からデータをロードして前記アドレスアレイおよび前記データアレイにおける前記他の正常な分割領域の再マッピングを行うキャッシュ制御部とを含むことを特徴とする請求項４記載のキャッシュメモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はキャッシュメモリに関し、特に縮退機能を有するキャッシュメモリに関する。
【０００２】
【従来の技術】
キャッシュメモリは、高速なプロセッサにおいてプロセッサから主記憶データのアクセス性能を向上させるために用いられている。基本的なライトスルー方式のキャッシュメモリの動作を、図５のブロック図を参照して説明する。
【０００３】
図示しない命令発行制御部からデータロードの要求が発行された場合、キャッシュメモリは、リクエストとロードアドレスを受信する。ロードアドレスは、タグアドレス（ＴＡＧ）、インデックスアドレス（ｉｎｄｅｘ）、オフセットアドレス（ＢＬ＿ｏｆｆｓｅｔ）の３つの部分に分類される。
【０００４】
キャッシュメモリは、まず、インデックスアドレスを参照してアドレスアレイ１を読み出す。アドレスアレイ１にはアドレスタグ（ＴＡＧ）とともに有効ビット（Ｖ）が格納されている。アドレスアレイ１から読み出したデータの有効ビットが点灯していた場合、キャッシュメモリは、アドレスアレイ１から読み出したアドレスタグ（以下、登録タグと呼ぶ）と、命令発行制御部から受信したアドレスタグ（以下、受信タグと呼ぶ）とをタグ比較器７において比較する。受信タグがアドレスアレイ１に登録されている登録タグと一致する場合、キャッシュメモリは、命令制御部から受信したインデックスアドレスとオフセットアドレスを加算器６により連結してデータアレイ２のエントリアドレスを生成し、主記憶上と同一のデータをデータアレイ２から読み出して図示しない演算部へ返却する。
【０００５】
また、受信タグがアドレスアレイ１に登録されている登録タグと不一致となる場合、キャッシュメモリは、主記憶データの対象コピーを保持していないと判断し、図示しない主記憶制御部へデータロード要求を送出する。主記憶制御部から要求データが返却されると、キャッシュメモリは、アドレスアレイ１上の該当ブロックの有効ビットを点灯させるとともに、アドレスアレイ１にアドレスタグを、データアレイ２に前記返却データを書き込み、また要求されたデータを演算部へ返却する。アドレスアレイ１から読み出したアドレスタグの有効ビットが点灯していない場合も前記と同様の動作を行う。
【０００６】
他方、命令発行制御部からデータストアの要求が発行された場合、キャッシュメモリは、リクエストとストアアドレスとストアデータを受信する。ロード要求と同様にストアアドレスのインデックスアドレスを参照し、アドレスアレイ１から有効ビットと登録タグを読み出す。アドレスアレイ１から読み出した有効ビットが点灯している場合、アドレスアレイ１に登録された登録タグとストアアドレスの受信タグを比較し、一致する場合は主記憶制御部にストア要求を出力するとともに対応するデータアレイ２のエントリを更新する。またアドレスアレイ１から読み出したエントリの登録タグとストアアドレスの受信タグが一致しない場合や、Ｖビットが点灯していない場合は主記憶制御部へのみストア要求を出力する。
【０００７】
このような、キャッシュメモリは、一般的に容量の大きなメモリマクロを使用しているが、容量の増加に伴い歩留まりが悪化することが考えられる。近年プロセッサとキャッシュメモリが１チップ化されるため、特に１チップ化されたＬＳＩにおいてはキャッシュ不良によるＬＳＩの歩留まりが低下し、廃棄するＬＳＩが多くなることが考えられる。
【０００８】
この要請に応えるために、アドレスアレイの各エントリ内にそのエントリが使用不能であるか否かを示すデグレードビットを設け、故障の検出されたエントリのデグレードビットを点灯させて、以後、そのエントリにマッピングされる主記憶アドレスに関しては、常に主記憶からデータをロードする縮退動作を行う技術が提案されている（例えば、特許文献１参照）。
【０００９】
また、メモリの縮退制御方法として、メモリのエラー部分を冗長メモリで代替する手法が提案されている（例えば、特許文献２参照）。
【００１０】
【特許文献１】
特開平４−２７３３４８号公報
【特許文献２】
特開昭５８−１６９４００号公報
【００１１】
【発明が解決しようとする課題】
しかしながら、特許文献１に記載の技術では、デグレードビットの点灯したエントリにマッピングされる主記憶アドレスについては、常に主記憶からデータをロードしなければならず、参照の局所性によって、デグレードビットの点灯したエントリにマッピングされる主記憶アドレスが連続してアクセスされる状況が発生すると、性能低下が長く継続する可能性がある。他方、特許文献２に記載の技術をキャッシュの縮退制御に適用する場合、冗長エントリを予めアドレスアレイやデータアレイに作り込んでおく必要があり、キャッシュメモリのハードウェア量が増加し、サイズが増大するという問題がある。
【００１２】
そこで本発明の目的は、キャッシュ縮退時における性能低下を比較的小さく抑えることのできるキャッシュ縮退制御方法およびキャッシュメモリを提供することにある。
【００１３】
また、本発明の別の目的は、縮退制御に必要なハードウェア量を比較的少なく抑えることのできるキャッシュ縮退制御方法およびキャッシュメモリを提供することにある。
【００１４】
【課題を解決するための手段】
本発明のキャッシュ縮退制御方法は、主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイとを含むキャッシュメモリのキャッシュ縮退制御方法において、前記データアレイおよび前記アドレスアレイを同サイズの複数の領域に分割し、何れかの分割領域に障害が発生したときに障害領域を切り離し、以後、他の正常な分割領域を、前記障害領域に対応する主記憶アドレスへのアクセスが発生したときは前記障害領域に対応する主記憶アドレスのキャッシュ領域として使用し、前記他の正常な分割領域に対応する主記憶アドレスへのアクセスが発生したときは前記他の正常な分割領域に対応する主記憶アドレスのキャッシュ領域として使用する。
【００１５】
本発明のキャッシュメモリは、主記憶のデータの写しを記憶するデータアレイと、前記データアレイ内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビットを記憶するアドレスアレイと、キャッシュメモリ全体の制御を司る制御部とを含むキャッシュメモリにおいて、前記制御部は、前記データアレイおよび前記アドレスアレイを同サイズの複数の領域に分割し、何れかの分割領域に障害が発生したときに障害領域を切り離し、以後、他の正常な分割領域を、前記障害領域に対応する主記憶アドレスへのアクセスが発生したときは前記障害領域に対応する主記憶アドレスのキャッシュ領域として使用し、前記他の正常な分割領域に対応する主記憶アドレスへのアクセスが発生したときは前記他の正常な分割領域に対応する主記憶アドレスのキャッシュ領域として使用する。
【００１６】
【作用】
本発明にあっては、データアレイおよびアドレスアレイの何れかの分割領域に障害が発生すると、その障害領域を以後キャッシュ領域には使用せず、その代わりに、他の正常な分割領域を代替領域として使用する。つまり、他の正常な分割領域に、障害領域に対応する主記憶アドレスをマッピングし、正常な分割領域を障害領域に対応する主記憶アドレスのキャッシュ領域として使用する。但し、他の正常な分割領域を障害領域の代替領域として使うのは、障害領域に対応する主記憶アドレスへのアクセスが発生している場合だけであり、障害領域の代替領域として使用している他の正常な分割領域に対応する主記憶アドレスへのアクセスが発生すると、他の正常な分割領域は本来の分割領域のために使用する。つまり、他の正常な分割領域に、それに対応する主記憶アドレスをマッピングし直し、キャッシュ領域として使用する。そして、再び障害領域に対応する主記憶アドレスへのアクセスが発生すると、再度マッピングをやり直す。
【００１７】
【発明の第１の実施の形態】
図１を参照すると、本発明の第１の実施の形態にかかるキャッシュメモリは、主記憶のデータの写しを記憶するデータアレイ２と、データアレイ２内のデータの主記憶上のアドレス情報および有効か否かを示す有効ビット（Ｖ）を記憶するアドレスアレイ１と、キャッシュメモリ全体の制御を司る制御部８とを含んで構成される。制御部８は、アドレスアレイ１とデータアレイ２を、それぞれ同サイズの上下２つの領域１１、１２および２１、２２に分割し、何れかの分割領域に障害が発生したときに障害領域を切り離し、以後、その障害領域は使用せず、代わりに、他の正常な分割領域を代替領域として使用することで、縮退状態でキャッシュ動作を継続する機能を有しており、エラー制御部３、縮退制御部４、キャッシュ制御部５、加算器６およびタグ比較器７から構成されている。
【００１８】
エラー制御部３には、アドレスアレイ１から読み出された登録タグおよびデータアレイ２から読み出されたデータが入力されており、パリティチェックによってアドレスアレイ１およびデータアレイ２のメモリ領域に障害が発生したか否かを検出し、障害検出時には、障害箇所がアドレスアレイ１の領域１１、１２の何れであるか、データアレイ２の領域２１、２２の何れであるかを、アドレスアレイ１およびデータアレイ２に加えられている参照アドレスの最上位ビットが１であったか、０であったかによって特定する。そして、アドレスアレイ１またはデータアレイ２の何れかの領域に障害を検出すると、アドレスアレイ１の全エントリの有効ビットをリセットし、障害情報を縮退制御部４およびキャッシュ制御部５へ通知する。通知する障害情報は、本実施の形態の場合は２ビットで構成され、上位１ビットは縮退状態を示す１に設定され、下位１ビットは正常な分割領域を示す値に設定される。つまり、障害箇所が上側領域１１、２１のときは正常な領域が下側領域１２、２２であることを示す値１に、障害箇所が下側領域１２、２２のときは正常な領域が上側領域であることを示す値０に、それぞれ設定される。
【００１９】
縮退制御部４は、１ビットの縮退フラグ（Ｄ）４１、１ビットの有効ポジションフラグ（Ｐ）４２、１ビットのカレントアドレスフラグ（Ｃ）４３の３つのフラグを有する。フラグＤ、Ｐ、Ｃの初期値は０であり、フラグＤには、エラー制御部３から通知される２ビットの障害情報の上位１ビットの値が設定され、フラグＰには障害情報の下位１ビットの値が設定される。つまり、アドレスアレイ１またはデータアレイ２に障害が発生したとき、フラグＤは値１に設定され、フラグＰはアドレスアレイ１またはデータアレイ２の上下の領域のうち上側が正常であれば値０に、下側が正常であれば値１に設定される。また、フラグＣには、キャッシュ制御部５の主記憶からのデータロード時に、ロードしたデータのアドレスを構成するインデックスアドレスの最上位１ビットの値が設定される。
【００２０】
また縮退制御部４は、フラグＰとフラグＣの排他的論理和をとるＥＸ−ＯＲ回路４４、ＥＸ−ＯＲ回路４４の出力とフラグＤの論理積をとるアンド回路４５、キャッシュ制御部５に保持されている処理中の受信アドレスにおけるインデックスアドレスの最上位ビット５２とフラグＣの排他的論理和をとるＥＸ−ＯＲ回路４６、ＥＸ−ＯＲ回路４６の出力とフラグＤの論理積をとり、キャッシュ制御部５へ出力するアンド回路４７と、前記受信アドレスのインデックスアドレスのうち、最上位ビット５２だけを反転する否定回路４８と、否定回路４８の出力および前記受信アドレスのインデックスアドレスを入力し、アンド回路４５の出力が０のときは前記受信アドレスのインデックスアドレスを選択し、アンド回路４５の出力が１のときは否定回路４８の出力を選択して、それぞれアドレスアレイ１、加算器６およびエラー制御部３に出力するセレクタ４９とを有する。
【００２１】
キャッシュ制御部５は、図示しない命令発行制御部と主記憶制御部とに接続されており、命令発行制御部から受信したデータロード要求、データストア要求の処理を行う。データロード要求はリクエストとロードアドレスを含み、データストア要求はリクエストとストアアドレスとストアデータを含む。ロードアドレスおよびストアアドレスは、図１の参照符号５１に示されるように、タグアドレス（ＴＡＧ）、インデックスアドレス（ｉｎｄｅｘ）、オフセットアドレス（ＢＬ＿ｏｆｆｓｅｔ）に分割される。タグアドレス（つまり受信タグ）は、タグ比較器７に出力され、インデックスアドレスは、縮退制御部４において必要に応じて最上位１ビットの反転処理が施されてアドレスアレイ１、加算器６およびエラー制御部３に出力される。オフセットアドレスは、加算器６に出力される。
【００２２】
キャッシュ制御部５は、受信アドレス（ロードアドレス、ストアアドレス）に基づくキャッシュ検索過程において、タグ比較器７からキャッシュヒット信号を受信すると、データロード要求の場合はヒットしたデータアレイ２中のデータを図示しない演算部に返却し、データストア要求の場合はヒットしたデータアレイ２中のデータを更新する。他方、タグ比較器７からキャッシュミス信号を受信すると、データロード要求の場合は主記憶からデータをロードしてアドレスアレイ１およびデータアレイ２を更新するとともにデータを演算部に返却し、データストア要求の場合は主記憶データのみを書き換える。また、キャッシュ検索過程において、エラー制御部３から障害情報が出力された場合、および縮退制御部４のアンド回路４７の出力が値１になって再マッピングが要求された場合、アドレスアレイ１の全エントリの有効ビットをリセットし、キャッシュミス時と同様の処理を行う。
【００２３】
図２は制御部８の処理例を示すフローチャートであり、図示しない命令発行制御部からデータロード要求を受信した場合の処理を示す。以下、図１および図２を参照して、本実施の形態にかかるキャッシュメモリのデータロード要求時の処理を説明する。なお、理解を容易にするために、インデックスアドレスは２ビットとし、アドレスアレイ１のエントリ数は４つで、上側領域１１はインデックスアドレス００、０１に対応する２つのエントリを含み、下側領域１２はインデックスアドレス１０、１１に対応する２つのエントリを含むものとする。
【００２４】
（１）まず、アドレスアレイ１およびデータアレイ２に障害が発生していない状況、つまりキャッシュが縮退していない状況を考える。このとき、フラグＤ、Ｐ、Ｃは全て値０に初期設定されている。
【００２５】
キャッシュ制御部５は、図示しない命令発行制御部からデータロード要求を受信すると（Ｓ１）、ロードアドレスの受信タグをタグ比較器７へ、インデックスアドレスを縮退制御部４へ、オフセットアドレスを加算器６へそれぞれ出力する。ここで、説明の便宜上、インデックスアドレスは値００と仮定する。
【００２６】
縮退制御部４は、フラグＤが値０であるため（Ｓ２でＮｏ）、キャッシュ制御部５から出力されたインデックスアドレス００をそのままセレクタ４９を通じてアドレスアレイ１、加算器６およびエラー制御部３に出力する。これにより、アドレスアレイ１の００エントリに格納された有効ビットと登録タグが読み出され（Ｓ３）、エラー制御部３とタグ比較器７へ出力される。エラー制御部３は、受信した登録タグのパリティチェックを行い（Ｓ４）、タグ比較器７は、受信した登録タグとキャッシュ制御部５から送られてきたロードアドレスの受信タグとを比較する（Ｓ５）。
【００２７】
タグ比較器７において、有効ビットが点灯しており、且つ登録タグと受信タグとの一致が検出されると（Ｓ５でＹｅｓ）、加算器６で生成されたデータアレイ２のアクセスアドレス（インデックスアドレス００＋オフセットアドレス）によってデータアレイ２から登録データが読み出される（Ｓ６）。エラー制御部３は、データアレイ２から読み出された登録データにエラーがないかどうかを調べる（Ｓ７）。エラーが無い場合、データアレイ２から読み出された登録データは、有効なデータとして図示しない演算部へ返却される（Ｓ８）。
【００２８】
他方、タグ比較器７において、有効ビットが点灯していないか、或いは登録タグと受信タグとの不一致が検出されると（Ｓ５でＮｏ）、タグ比較器７からキャッシュ制御部５にキャッシュミス信号が出力される（Ｓ９）。キャッシュ制御部５は、受信ロードアドレス５１に基づいて、図示しない主記憶制御部へデータロード要求を送出する（Ｓ１０）。そして、主記憶制御部から要求データが返却されると、キャッシュ制御部５は、縮退制御部４のフラグＣに、受信ロードアドレス５１のインデックスアドレスの最上位ビットの値０を設定し（Ｓ１１）、主記憶から返却されたデータをデータアレイ２に登録するとともにそのタグアドレスと点灯させたＶビットをアドレスアレイ１に登録する。このとき、フラグＤの値は０であるため（Ｓ１２でＮｏ）、ロードアドレスの受信インデックスの値００がそのままアドレスアレイ１に与えられており、タグアドレスはアドレスアレイ１の上側領域１１におけるインデックスアドレス００に対応するエントリに登録され（Ｓ１５）、またデータもデータアレイ２の上側領域２１のエントリに登録される（Ｓ１６）。
【００２９】
（２）次に、（１）と同様にインデックスアドレスが値００であるデータロード要求時にアドレスアレイ１またはデータアレイ２の障害が検出された場合の動作を説明する。エラー制御部３は、アドレスアレイ１から読み出された登録タグにパリティエラーを検出するか（Ｓ４でＮｏ）、データアレイ２から読み出されたデータにパリティエラーを検出すると（Ｓ７でＮｏ）、アドレスアレイ１の全エントリの有効ビットを全てリセットして不点灯状態とする（Ｓ２０）。つまり、キャッシュフラッシュを行う。なお、エラー制御部３の動作に関し、１回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるか、複数回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるかは、任意である。
【００３０】
エラー制御部３は、固定的な障害を検出すると、アドレスアレイ１およびデータアレイ２に加わっているインデックスアドレスの最上位ビットの値０により、アドレスアレイ１側での障害検出時には上側領域１１に、データアレイ２側での障害検出時には上側領域２１にそれぞれ障害が発生したと判断し、値１１の障害情報を縮退制御部４およびキャッシュ制御部５へ通知する。
【００３１】
縮退制御部４は、障害情報の上位ビットの値１をフラグＤに設定し、下位ビットの値１をフラグＰに設定する（Ｓ２１）。また、キャッシュ制御部５は、タグ比較器７からキャッシュミス信号を受信した場合と同様に、主記憶制御部にデータロード要求を出してデータをロードし（Ｓ１０）、受信インデックスアドレスの最上位ビットの値０をフラグＣに設定し（Ｓ１１）、アドレスアレイ１とデータアレイ２を更新する（Ｓ１２〜Ｓ１６）。このとき、フラグＤの値は１で（Ｓ１２でＹｅｓ）、フラグＰの値１とフラグＣの値０とが相違するので（Ｓ１３でｎｏ）、受信インデックスアドレスの値００が否定回路４８で値１０に変換されてセレクタ４９を通じてアドレスアレイ１、加算器６に加えられるため、タグアドレスはアドレスアレイ１の下側領域１２におけるインデックスアドレスの値１０に対応するエントリに登録され、またデータもデータアレイ２の下側領域２２のエントリに登録される。また、同時に主記憶からリードしたデータが演算部に返却される。
【００３２】
次に、インデックスアドレスの値が同じ００のアドレスに対するデータロード要求が再び発行された場合を考える。この場合、フラグＤの値が１になっており（Ｓ２でＹｅｓ）、フラグＣの値０と受信インデックスの最上位ビットの値０とが一致し（Ｓ１７でＹｅｓ）、フラグＰの値１とフラグＣの値０とが相違するので（Ｓ１８でＮｏ）、受信インデックスアドレスの値００が縮退制御部４で値１０に変換されてアドレスアレイ１および加算器６に出力され、アドレスアレイ１の１０のエントリがアクセスされることになる（Ｓ３）。このため、アドレスアレイ１から読み出された登録タグと受信タグとが一致していれば（Ｓ５でＹｅｓ）、データアレイ２に登録されたデータが有効なデータとして演算部へ出力される（Ｓ６〜Ｓ８）。
【００３３】
次に、インデックスアドレスが値０１のアドレスに対するデータロード要求が発行された場合を想定する。このとき、フラグＤの値が１になっており（Ｓ２でＹｅｓ）、フラグＣの値０と受信インデックスの最上位ビットの値０とが一致し（Ｓ１７でＹｅｓ）、フラグＰの値１とフラグＣの値０とが相違するので（Ｓ１８でＮｏ）、受信インデックスアドレスの値０１が縮退制御部４で値１１に変換されてアドレスアレイ１および加算器６に出力され、アドレスアレイ１の１１のエントリがアクセスされることになる（Ｓ３）。アドレスアレイ１の１１のエントリのＶビットは前述したエラー制御部３によって不点灯状態にリセットされているため、キャッシュミスとなり（Ｓ５でＮｏ、Ｓ９）、キャッシュ制御部５により主記憶制御部からデータがロードされ（Ｓ１０）、受信インデックスアドレスの最上位ビットの値０をフラグＣに設定し（Ｓ１１）、アドレスアレイ１とデータアレイ２を更新する（Ｓ１２〜Ｓ１６）。このとき、フラグＤの値は１で（Ｓ１２でＹｅｓ）、フラグＰの値１とフラグＣの値０とが相違するので（Ｓ１３でＮｏ）、受信インデックスアドレスの値０１が否定回路４８で値１１に変換されてセレクタ４９を通じてアドレスアレイ１、加算器６に加えられるため、タグアドレスはアドレスアレイ１の下側領域１２におけるインデックスアドレスの値１１に対応するエントリに登録され、またデータもデータアレイ２の下側領域２２のエントリに登録される。また、同時に主記憶からリードしたデータが演算部に返却される。
【００３４】
このようにして、アドレスアレイ１およびデータアレイ２の上側領域１１、２１に障害が検出されると、正常な下側領域１２、２２に、インデックスアドレスの値が００、０１となる主記憶アドレスがマッピングされ、キャッシュメモリの動作が継続される。
【００３５】
（３）次に、アドレスアレイ１およびデータアレイ２の正常な下側領域１２、２２に、インデックスアドレス値００、０１の主記憶アドレスがマッピングされている状態で、インデックスアドレスが値１１のアドレスに対するデータロード要求が発行された場合を想定する。この場合、フラグＤの値が１になっており（Ｓ２でＹｅｓ）、フラグＣの値０と受信インデックスの最上位ビットの値１とが一致しないので（Ｓ１７でＮｏ）、縮退制御部４のアンド回路４８の出力値が１となり、キャッシュ制御部５はアドレスアレイ１の全エントリのＶビットを全て不点灯状態にリセットする（Ｓ２２）。つまり、キャッシュフラッシュを行う。そして、キャッシュ制御部５は、タグ比較器７からキャッシュミス信号を受信した場合と同様に、主記憶制御部にデータロード要求を出してデータをロードし（Ｓ１０）、受信インデックスアドレスの最上位ビットの値１をフラグＣに設定し（Ｓ１１）、アドレスアレイ１とデータアレイ２を更新する（Ｓ１２〜Ｓ１６）。このとき、フラグＤの値は１で（Ｓ１２でＹｅｓ）、フラグＰの値１とフラグＣの値１とが一致するので（Ｓ１３でＹｅｓ）、受信インデックスアドレスの値１１がそのままセレクタ４９を通じてアドレスアレイ１、加算器６に加えられるため、タグアドレスはアドレスアレイ１の下側領域１２におけるインデックスアドレスの値１１に対応するエントリに登録され、またデータもデータアレイ２の下側領域２２のエントリに登録される。また、同時に主記憶からリードしたデータが演算部に返却される。
【００３６】
このようにして、アドレスアレイ１およびデータアレイ２の正常な下側領域１２、２２に、インデックスアドレス値００、０１の主記憶アドレスがマッピングされている状態で、インデックスアドレスが値１１または１０のアドレスに対するデータロード要求が発行されると、正常な下側領域１２、２２に、インデックスアドレスの値が１１、１０となる主記憶アドレスがマッピングされ、キャッシュメモリの動作が継続される。
【００３７】
図３は制御部８の処理例を示すフローチャートであり、図示しない命令発行制御部からデータストア要求を受信した場合の処理を示す。以下、図１および図３を参照して、本実施の形態にかかるキャッシュメモリのデータストア要求時の処理を説明する。なお、データロード要求時における説明と同様に、インデックスアドレスは２ビットとし、アドレスアレイ１のエントリ数は４つで、上側領域１１はインデックスアドレス００、０１に対応する２つのエントリを含み、下側領域１２はインデックスアドレス１０、１１に対応する２つのエントリを含むものとする。
【００３８】
（４）まず、アドレスアレイ１およびデータアレイ２に障害が発生していない状況、つまりキャッシュが縮退していない状況を考える。このとき、フラグＤ、Ｐ、Ｃは全て値０に初期設定されている。
【００３９】
キャッシュ制御部５は、図示しない命令発行制御部からデータストア要求を受信すると（Ｓ３１）、図示しない主記憶制御部にデータストア要求を出力する（Ｓ３２）。次に、ストアアドレスの受信タグをタグ比較器７へ、インデックスアドレスを縮退制御部４へ、オフセットアドレスを加算器６へそれぞれ出力する。ここで、説明の便宜上、インデックスアドレスは値００と仮定する。
【００４０】
縮退制御部４は、フラグＤが値０であるため（Ｓ３３でＮｏ）、キャッシュ制御部５から出力されたインデックスアドレスの値００をそのままセレクタ４０９を通じてアドレスアレイ１、加算器６およびエラー制御部３に出力する。これにより、アドレスアレイ１の００エントリに格納された有効ビットと登録タグが読み出され（Ｓ３４）、エラー制御部３とタグ比較器７へ出力される。エラー制御部３は、受信した登録タグをチェックし（Ｓ３５）、タグ比較器７は、受信した登録タグとキャッシュ制御部５から送られてきたストアアドレスの受信タグとを比較する（Ｓ３６）。
【００４１】
タグ比較器７において、有効ビットが点灯しており、且つ登録タグと受信タグとの一致が検出されると（Ｓ３６でＹｅｓ）、加算器６で生成されたデータアレイ２のアクセスアドレス（インデックスアドレス００＋オフセットアドレス）が示すデータアレイ２のエントリにストアデータが書き込まれる（Ｓ３７）。アドレスアレイ１から読み出したＶビットが点灯していない場合や、登録タグと受信タグが一致しない場合は、そのまま処理を終える。
【００４２】
（５）次に、（４）と同様にインデックスアドレスが値００であるデータストア要求時にアドレスアレイ１の障害が検出された場合の動作を説明する。エラー制御部３は、アドレスアレイ１から読み出された登録タグにパリティエラーを検出すると（Ｓ３５でＮｏ）、アドレスアレイ１の全エントリの有効ビットを全てリセットして不点灯状態とする（Ｓ３８）。つまり、キャッシュフラッシュを行う。なお、データロード要求時と同様にエラー制御部３の動作に関し、１回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるか、複数回のエラー検出で固定的な障害が発生したと判断して縮退を行わせるかは、任意である。
【００４３】
エラー制御部３は、固定的な障害を検出すると、アドレスアレイ１に加わっているインデックスアドレスの最上位ビットの値０により、アドレスアレイ１の上側領域１１に障害が発生したと判断し、値１１の障害情報を縮退制御部４へ通知する。縮退制御部４は、障害情報の上位ビットの値１をフラグＤに設定し、下位ビットの値１をフラグＰに設定する（Ｓ３９）。そして、処理を終える。
【００４４】
（６）次に、フラグＤの値が１になっている縮退状態において、データストア要求が発生した場合の処理を説明する。この場合、フラグＤが値１なので（Ｓ３３でＹｅｓ）、フラグＣの値とストアアドレスにおけるインデックスアドレスの最上位ビットの値とが一致するか否かが縮退制御部４のＥＸ−ＯＲ回路４６で調べられる（Ｓ４０）。若し、両者が一致しないときは、上書きすべきデータはキャッシュに存在しないので、処理を終える。両者が一致する場合、フラグＣの値とフラグＰの値とが一致するか否かが縮退制御部４のＥＸ−ＯＲ回路４４で調べられる（Ｓ４１）。若し、両者が一致するときは、受信インデックスアドレスがそのまま縮退制御部４からアドレスアレイ１、加算器６およびエラー制御部３へ出力され、不一致のときは、受信インデックスアドレスの最上位ビットの値が縮退制御部４で反転されて（Ｓ４２）、アドレスアレイ１、加算器６およびエラー制御部３へ出力される。以降、前述したと同様の動作が行われる（Ｓ３４〜３９）。
【００４５】
【発明の第２の実施の形態】
第１の実施の形態では、縮退制御部４のフラグＰに、アドレスアレイ１およびデータアレイ２の分割領域１１、１２、２１、２２のうち、正常な領域を示す値を設定したが、本実施の形態では、フラグＰに障害領域を示す値を設定する。本実施の形態にかかるキャッシュメモリの要部ブロック図を図４に示す。図１に示した第１の実施の形態と相違するところは、参照符号１０１のフラグＰに、アドレスアレイ１またはデータアレイ２の上側領域１１、２１に障害が発生した場合には値０を設定し、反対に下側領域１２、２２に障害が発生した場合には値１を設定することと、図１のＥＸ−ＯＲ回路４４に代えてアンド回路１０２を備えている点であり、その他は第１の実施の形態と同じである。
【００４６】
例えば、アドレスアレイ１の上側領域１１に障害が発生したため、下側領域１２を使って縮退動作しているとき、フラグＤは値１、フラグＰは値０に設定される。そして、正常な下側領域１２にインデックスアドレスが００または０１のアドレスがマッピングされているとき、フラグＣには値０が設定される。この状態で、インデックスアドレスが００または０１の受信アドレスをキャッシュ制御部５から受けると、フラグＰとフラグＣの値が一致しているため、アンド回路１０２、４５の出力値が１であり、セレクタ４９は、インデックスアドレスの最上位ビットを反転し、１０または１１に変換して出力する。また、インデックスアドレスが１０または１１の受信アドレスをキャッシュ制御部５から受けると、第１の実施の形態と同様にアンド回路４７の出力が１となり、キャッシュフラッシュが行われて、再マッピングされる。
【００４７】
反対に、正常な下側領域１２にインデックスアドレスが１０または１１のアドレスがマッピングされているとき、フラグＣには値１が設定される。この状態で、インデックスアドレスが１０または１１の受信アドレスをキャッシュ制御部５から受けると、フラグＰとフラグＣの値が不一致で、アンド回路１０２、４５の出力値は０のため、セレクタ４９は、インデックスアドレスの最上位ビットを反転せず、そのまま出力する。また、インデックスアドレスが００または０１の受信アドレスをキャッシュ制御部５から受けると、第１の実施の形態と同様にアンド回路４７の出力が１となり、キャッシュフラッシュが行われて、再マッピングされる。
【００４８】
以上本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。例えば、上記の実施の形態ではアドレスアレイとデータアレイを上下に２分割したが、４分割、８分割、…、することも可能である。また、本発明はキャッシュのウェイ数にかかわらず適用可能であり、全ウェイを一括して縮退しても、本縮退機能をウェイ毎に個別に制御することも可能である。更に、アドレスアレイおよびデータアレイの障害検出はパリティチェック以外に、ＥＣＣ訂正不可などによって検出することも可能である。
【００４９】
【発明の効果】
以上説明したように本発明によれば以下のような効果が得られる。
【００５０】
キャッシュ縮退時における性能低下を比較的小さく抑えることができる。その理由は、キャッシュ縮退時であっても特許文献１に記載の技術のように特定の主記憶アドレスが常にキャッシュされない状況は発生しないからである。また、１つの正常な分割領域を、障害領域に対応する主記憶アドレスのマッピング用とその正常な分割領域に対応する主記憶アドレスのマッピング用とに切り替える際には一時的にキャッシュミスが多発するが、参照の局所性があるために、障害領域に対応する主記憶アドレスへのアクセスが発生したとき、以後、障害領域に対応する主記憶アドレスへのアクセスが集中する傾向があり、他方、障害領域の代替に使った分割領域に対応する主記憶アドレスへのアクセスが発生すると、以後、その分割領域に対応する主記憶アドレスへのアクセスが集中する傾向があるため、マッピングの切替頻度によるオーバーヘッドはそれほど大きくないからである。
【００５１】
縮退制御に必要なハードウェア量を比較的少なく抑えることができる。その理由は、特許文献２のような冗長メモリが必要でなく、他の正常な分割領域を使用するからである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態にかかるキャッシュメモリのブロック図である。
【図２】本発明の第１の実施の形態にかかるキャッシュメモリのデータロード要求時の処理例を示すフローチャートである。
【図３】本発明の第１の実施の形態にかかるキャッシュメモリのデータストア要求時の処理例を示すフローチャートである。
【図４】本発明の第２の実施の形態にかかるキャッシュメモリの要部ブロック図である。
【図５】キャッシュメモリの基本的な動作の説明に用いるブロック図である。
【符号の説明】
１…アドレスアレイ
２…データアレイ
３…エラー制御部
４…縮退制御部
５…キャッシュ制御部
６…加算器
７…タグ比較器
８…制御部
【図１】
2004264966.tif 000003
【図２】
2004264966.tif 000004
【図３】
2004264966.tif 000005
【図４】
2004264966.tif 000006
【図５】
2004264966.tif 000007