(57)【要約】  複数のキャッシュラインを有するウェイを複数備えるデータ保持部と、データ保持部が有するキャッシュラインの１ライン分又はキャッシュラインの一部のデータを保持する交替データレジスタと、データ保持部において故障が発生した故障キャッシュライン及び故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持する交替アドレスレジスタと、故障発生部を含むウェイの情報を保持する交替ウェイレジスタと、データ保持部にアクセスを行う場合に、アクセスに用いられるインデックスアドレスと交替アドレスレジスタが保持するインデックスアドレスを比較するアドレスマッチ回路と、データ保持部にアクセスを行う場合に、アクセスに用いられるウェイ情報と交替ウェイレジスタの保持するウェイ情報を比較するウェイマッチ回路と、を備えるようにキャッシュメモリ装置を構成した。
2008155805.tif 000002
【特許請求の範囲】
【請求項１】
複数のキャッシュラインを有するウェイを複数備え、前記キャッシュラインにデータを保持するデータ保持部と、
前記データ保持部が有するキャッシュラインの１ライン分又は前記キャッシュラインの一部のデータを保持する交替データレジスタと、
キャッシュアクセスに用いられ、前記データ保持部において故障が発生した故障キャッシュライン及び前記故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持する交替アドレスレジスタと、
前記データ保持部の故障ビットを含む前記データ保持部におけるウェイの情報を保持する交替ウェイレジスタと、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるインデックスアドレスと前記交替アドレスレジスタが保持する前記インデックスアドレスを比較するアドレスマッチ回路と、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるウェイ情報と前記交替ウェイレジスタの保持するウェイ情報を比較するウェイマッチ回路と、
を備えることを特徴とするキャッシュメモリ装置。  
【請求項２】
前記データ保持部への読み出し参照アクセスの際、前記アドレスマッチ回路による比較結果が一致した場合に、前記交替ウェイレジスタの保持するウェイ情報に対応するウェイから読み出したデータを前記交替データレジスタの内容と差し替えて前記データ保持部からの読み出しデータとすることを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項３】
前記データ保持部への書き込み参照アクセスの際、前記アドレスマッチ回路および前記ウェイマッチ回路による比較結果が両方とも一致した場合に、前記データ保持部の書き込み対象ウェイにデータを書き込むと共に、前記交替データレジスタにデータを書き込み、該交替データレジスタの内容をデータ保持部の最新の状態に合わせることを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項４】
前記データ保持部上に故障ビットが検出された場合に、該故障ビットを含むキャッシュラインに保持していたデータを下の階層のキャッシュメモリまたは主記憶に対して必要に応じて書き戻しを行うとともに、該キャッシュラインを無効化し、無効化が完了したときに無効化対象となったキャッシュラインのアドレスを前記交替アドレスレジスタに保持し、無効化対象となったキャッシュウェイを前記交替ウェイレジスタに保持することを特徴とする請求項１乃至請求項３いずれか１項に記載のキャッシュメモリ装置。
【請求項５】
キャッシュメモリ装置の動作モードが、キャッシュリプレース発生時に前記交替アドレスレジスタの更新を行うキャッシュリプレースモードである場合に、キャッシュリプレース対象のキャッシュインデックスアドレスおよびキャッシュウェイで前記交替アドレスレジスタと前記交替ウェイレジスタを更新することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項６】
前記データ保持部に故障ビットが発生した時ではなく、通常動作中に、前記動作モードを前記キャッシュリプレースモードに切り替え、前記交替アドレスレジスタの動作チェックおよびキャッシュメモリビットのチェックを行うことを特徴とする請求項５記載のキャッシュメモリ装置。
【請求項７】
前記インデックスアドレスにおける、前記キャッシュライン内の故障ビットを含むデータブロックを示すビット数が１ビット増えるごとに、前記交替データレジスタのサイズを半減可能であることを特徴とする、請求項１乃至請求項６いずれか１項に記載のキャッシュメモリ装置。
【請求項８】
キャッシュメモリ装置と前記キャッシュメモリ装置に保持されたデータに対して演算を行う演算処理部とを備えた演算処理装置であって、
複数のキャッシュラインを有するウェイを複数備え、前記キャッシュラインにデータを保持するデータ保持部と、
前記データ保持部が有するキャッシュラインの１ライン分又は前記キャッシュラインの一部のデータを保持する交替データレジスタと、
キャッシュアクセスに用いられ、前記データ保持部において故障が発生した故障キャッシュライン及び前記故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持する交替アドレスレジスタと、
前記データ保持部の故障ビットを含む前記データ保持部におけるウェイの情報を保持する交替ウェイレジスタと、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるインデックスアドレスと前記交替アドレスレジスタが保持する前記インデックスアドレスを比較するアドレスマッチ回路と、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるウェイ情報と前記交替ウェイレジスタの保持するウェイ情報を比較するウェイマッチ回路と、
を備えることを特徴とする演算処理装置。
【請求項９】
前記データ保持部への読み出し参照アクセスの際、前記アドレスマッチ回路による比較結果が一致した場合に、前記交替ウェイレジスタの保持するウェイ情報に対応するウェイから読み出したデータを前記交替データレジスタの内容と差し替えて前記データ保持部からの読み出しデータとすることを特徴とする請求項８記載の演算処理装置。
【請求項１０】
前記データ保持部への書き込み参照アクセスの際、前記アドレスマッチ回路および前記ウェイマッチ回路による比較結果が両方とも一致した場合に、前記データ保持部の書き込み対象ウェイにデータを書き込むと共に、前記交替データレジスタにデータを書き込み、該交替データレジスタの内容をデータ保持部の最新の状態に合わせることを特徴とする請求項８記載の演算処理装置。
【請求項１１】
前記データ保持部上に故障ビットが検出された場合に、該故障ビットを含むキャッシュラインに保持していたデータを下の階層のキャッシュメモリまたは主記憶に対して必要に応じて書き戻しを行うとともに、該キャッシュラインを無効化し、無効化が完了したときに無効化対象となったキャッシュラインのアドレスを前記交替アドレスレジスタに保持し、無効化対象となったキャッシュウェイを前記交替ウェイレジスタに保持することを特徴とする請求項８乃至請求項１０いずれか１項に記載の演算処理装置。
【請求項１２】
前記キャッシュメモリ装置の動作モードが、キャッシュリプレース発生時に前記交替アドレスレジスタの更新を行うキャッシュリプレースモードである場合に、キャッシュリプレース対象のキャッシュインデックスアドレスおよびキャッシュウェイで前記交替アドレスレジスタと前記交替ウェイレジスタを更新することを特徴とする請求項８記載の演算処理装置。
【請求項１３】
前記データ保持部に故障ビットが発生した時ではなく、通常動作中に、前記動作モードを前記キャッシュリプレースモードに切り替え、前記交替アドレスレジスタの動作チェックおよびキャッシュメモリビットのチェックを行うことを特徴とする請求項１２記載の演算処理装置。
【請求項１４】
前記インデックスアドレスにおける、前記キャッシュライン内の故障ビットを含むデータブロックを示すビット数が１ビット増えるごとに、前記交替データレジスタのサイズを半減可能であることを特徴とする、請求項８乃至請求項１３いずれか１項に記載の演算処理装置。
【請求項１５】
複数のキャッシュラインを有するウェイを複数備えるデータ保持部と、アドレスの比較を行うアドレスマッチ回路と、前記ウェイの比較を行うウェイマッチ回路と、キャッシュラインの交替を制御する第１乃至第３のレジスタを備えたキャッシュメモリの制御方法であって、
前記データ保持部の前記キャッシュラインにデータを保持するステップと、
前記第１のレジスタに、前記データ保持部が有するキャッシュラインの１ライン分又は前記キャッシュラインの一部のデータを保持するステップと、
前記第２のレジスタに、キャッシュアクセスに用いられ、前記データ保持部において故障が発生した故障キャッシュライン及び前記故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持するステップと、
前記第３のレジスタに、前記データ保持部の故障ビットを含む前記データ保持部におけるウェイの情報を保持するステップと、
前記データ保持部にアクセスを行う場合に、前記アドレスマッチ回路により、アクセスに用いられるインデックスアドレスと前記第２のレジスタが保持する前記インデックスアドレスを比較するステップと、
前記データ保持部にアクセスを行う場合に、前記ウェイマッチ回路により、アクセスに用いられるウェイ情報と前記第３のレジスタが保持する情報を比較するステップと、
を備えることを特徴とする制御方法。
【請求項１６】
前記データ保持部への読み出し参照アクセスの際、前記アドレスマッチ回路による比較結果が一致した場合に、前記交替ウェイレジスタの保持するウェイ情報に対応するウェイから読み出したデータを前記第１のレジスタの内容と差し替えて前記データ保持部からの読み出しデータとするステップを備えることを特徴とする請求項１５記載の制御方法。
【請求項１７】
前記データ保持部への書き込み参照アクセスの際、前記アドレスマッチ回路および前記ウェイマッチ回路による比較結果が両方とも一致した場合に、前記データ保持部の書き込み対象ウェイにデータを書き込むと共に、前記第１のレジスタにデータを書き込み、前記第１のレジスタの内容をデータ保持部の最新の状態に合わせるステップを備えることを特徴とする請求項１５記載の制御方法。
【請求項１８】
前記データ保持部上に故障ビットが検出された場合に、該故障ビットを含むキャッシュラインに保持していたデータを下の階層のキャッシュメモリまたは主記憶に対して必要に応じて書き戻しを行うとともに、該キャッシュラインを無効化し、無効化が完了したときに無効化対象となったキャッシュラインのアドレスを前記第２のアドレスに保持し、無効化対象となったキャッシュウェイを前記第３のレジスタに保持するステップを備えることを特徴とする請求項１５乃至請求項１７いずれか１項に記載の制御方法。
【請求項１９】
前記キャッシュメモリの動作モードが、キャッシュリプレース発生時に前記第２のレジスタの更新を行うキャッシュリプレースモードである場合に、キャッシュリプレース対象のキャッシュインデックスアドレスおよびキャッシュウェイで前記第２のレジスタと前記第３のレジスタを更新するステップを備えることを特徴とする請求項１５記載の制御方法。
【請求項２０】
前記データ保持部に故障ビットが発生した時ではなく、通常動作中に、前記動作モードを前記キャッシュリプレースモードに切り替え、前記第２のレジスタの動作チェックおよびキャッシュメモリビットのチェックを行うステップを備えることを特徴とする請求項１９記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュラインに発生した故障を救済するキャッシュライン交替レジスタを備えたキャッシュメモリ装置、演算処理装置及びその制御方法に関する。
【背景技術】
【０００２】
従来のキャッシュメモリの固定故障に対する救済処置としてブロック縮退およびＷＡＹ（ウェイ）縮退という手法が用いられていた。ブロック縮退およびＷＡＹ縮退では、キャッシュメモリのＷＡＹ単位にキャッシュメモリ故障回数を観測し、単位時間内に発生する故障回数が規定の閾値を超えたら、ブロックまたはＷＡＹの切り離しを行う。初めに閾値を超えたときに故障していたキャッシュラインとそのＷＡＹを切り離す機能をブロック縮退と呼ぶ。ブロック縮退では１ライン分のデータが切り離される。ブロック縮退したキャッシュライン以外のデータにも故障が発生するとブロック縮退対象を最後に故障が発生したキャッシュラインとＷＡＹに切り替える。すなわち、ブロック縮退による故障救済は、キャッシュメモリ１ライン分のデータの保護を目的としており、複数キャッシュラインが故障しているときは、ブロック縮退発生後もキャッシュメモリの故障回数が増加し、これが規定値に達したときに故障していたＷＡＹを切り離す。ＷＡＹ縮退を起こしたとき、プロセッサは動作を継続できるとは言うものの、大幅な性能低下を起こす。そこで、ＷＡＹ縮退の前に１キャッシュラインだけを切り離すブロック縮退を起こすことで、性能の低下度合いを低減している。【０００３】
しかしながら、キャッシュメモリの記憶容量が小さい場合は、１キャッシュラインの損失による性能劣化も無視できなくなるため、ブロック縮退を起こした場合も故障チップは交換対象とする必要がある。複数のコアを有したＣＰＵの場合、１ビット固定故障でブロック縮退したコアだけを交換することはできないため、正常動作している他のコアをすべて含んだチップ単位で交換することになる。昨今のＣＰＵ開発においてはチップに搭載するコア数を増加しつつ、一次キャッシュメモリの容量を縮小する傾向にあるため、従来のブロック縮退によるキャッシュメモリの故障保護機構では、故障していないコアを無駄に交換対象とする可能性が高まってしまう。その結果、従来のブロック縮退による救済処置では、ＣＰＵチップ単位での故障耐性が不十分であった。【０００４】
そこで、１ビット固定故障が起きた際に、故障ラインのキャッシュデータを登録するためのキャッシュライン交替レジスタを設けることで１ビット固定故障ラインのデータを交替し、キャッシュラインを損失せずに、１ビット固定故障を救済する手法が考案された（特許文献１）。【０００５】
キャッシュライン交替レジスタの実装にあたって、従来採用されてきた方式においては、交替対象アドレスの比較に物理アドレスを使用し、これが一致した際にキャッシュライン交替レジスタのデータを読み出していた。物理アドレスはビット数が多いためアドレス処理に時間がかかる。また、比較対象となる物理アドレスを得るためには、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）やキャッシュタグを参照する必要がある。そのため、キャッシュメモリの読み出しにおいてはキャッシュライン交替レジスタが使用できたが、キャッシュメモリの書き込みにおいては、ＴＬＢ、キャッシュタグの参照比較と書き込みのフローが通常のキャッシュ制御フローから大きく外れたものとなるため、キャッシュライン交替レジスタの使用を放棄していた。すなわち、キャッシュ交替レジスタがストア対象となるたびに、キャッシュライン交替レジスタを無効化して主記憶参照からやり直すなど、ストア動作時に性能低下が発生していた。【０００６】
また、従来のキャッシュライン交替レジスタは、キャッシュライン１ライン分の全ビットを交替できるように構成されていた。しかし、実際には１キャッシュライン中に、複数個所で１ビットエラーが生じる確率は低く、回路資源の使用効率があまりよくなかった。【０００７】
そこで本発明では、従来のキャッシュライン交替レジスタの問題を解決する新しい構成のキャッシュライン交替レジスタを提案する。
そこでまず、以下に、本発明のキャッシュライン交替レジスタの搭載されていない、従来のキャッシュの構成について説明する。本発明の構成は、キャッシュライン交替レジスタの搭載されていない、従来のキャッシュの動作を、部分的に差し替える機能を追加することで実現するため、従来のキャッシュの構成について明らかにしておくためである。【０００８】
図１に、従来のＣＰＵの構成を示す。
図１に示した、ＣＰＵ１０１は４つのコアＣＯＲＥ−０（１０２−０）、ＣＯＲＥ−１（１０２−１）、ＣＯＲＥ−２（１０２−２）、ＣＯＲＥ−３（１０２−３）を備える（以下、ＣＯＲＥを１０２とする）。【０００９】
各コアＣＯＲＥ１０２は、ＩＵ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｕｎｉｔ：命令処理装置）（１０４−０、１０４−１、１０４−２、１０４−３：以下、ＩＵを１０４とする）と、ＥＵ（Ｅｘｅｃｕｔｉｏｎ  Ｕｎｉｔ：演算装置）（１０５−０、１０５−１、１０５−２、１０５−３：以下、ＥＵを１０５とする）と、ＳＵ（Ｓｔｏｒａｇｅ  Ｕｎｉｔ：ストレージ制御装置）（１０３−０、１０３−１、１０３−２、１０３−３：以下、ＳＵを１０３とする）とを備える。【００１０】
更に、ＳＵ（１０３）は、命令キャッシュであるＩＦ−ＬＢＳ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｆｅｔｃｈ  Ｌｏｃａｌ  Ｂｕｆｆｅｒ  Ｓｔｏｒａｇｅ）（１０６−０、１０６−１、１０６−２、１０６−３：以下、ＩＦ−ＬＢＳを１０６とする）と、オペランドキャッシュであるＯＰ−ＬＢＳ（Ｏｐｅｒａｎｄ  Ｌｏｃａｌ  Ｂｕｆｆｅｒ  Ｓｔｏｒａｇｅ）（１０７−０、１０７−１、１０７−２、１０７−３：以下、ＯＰ−ＬＢＳを１０７とする）をそれぞれ備える。【００１１】
また、ＣＰＵ１０１には、２次キャッシュであるＳＸ（Ｓｅｃｏｎｄ  Ｃａｃｈｅ）１０８を備え、それぞれのコアＣＯＲＥ１０２とのデータのやり取りを行い、更にＳＸ１０８はＳＹＳＴＥＭ  ＢＵＳ１０９を介して主記憶であるＭｅｍｏｒｙ１１０とデータのやり取りを行う。【００１２】
次に、図２に、ＣＰＵ１０１に搭載されている１次キャッシュであるＩＦ−ＬＢＳ１０６と、ＯＰ−ＬＢＳ１０７の構成を示す。
キャッシュは、ＷＡＹ０（２０１）とＷＡＹ１（２０２）の二つのＷＡＹからなる。アドレス信号がそれぞれのＷＡＹに与えられると、それぞれのアドレスのデータを読み出し、データ信号線に出力する。データ線２０５にはＷＡＹ０のキャッシュＲＡＭ出力データが、データ線２０６にはＷＡＹ１のキャッシュＲＡＭ出力データが出力される。また、ＷＡＹ選択回路２０３にＷＡＹ情報が与えられると、データ線２０５とデータ線２０６のいずれかを選択して、ＩＵ１０４（またはＥＵ１０５）にデータを出力する（２０７）。【００１３】
尚、本発明は、命令キャッシュＩＦ−ＬＢＳ１０６、オペランドキャッシュＯＰ−ＬＢＳ１０７を構成する１次キャッシュを対象とするものである。
上述のような構成において、キャッシュの動作についてフロー図を用いて以下に詳細に説明する。【００１４】
まず、図３にキャッシュの読み出し動作のフローを示す。
キャッシュメモリの読み出しにおいては、キャッシュデータ部とキャッシュタグ部およびＴＬＢ部にアクセスする。【００１５】
キャッシュデータ部には仮想アドレスからビット１４〜５を取り出して送出し（Ｓ３０１）、参照した次のサイクルにＲＡＭ内部でデータの取り出しを行い（Ｓ３０２）、その次のサイクルに全キャッシュＲＡＭから合わせて６４バイトのデータが取り出される（Ｓ３０３）。取り出されたデータは３２バイトの２ＷＡＹ分のデータから構成される。【００１６】
キャッシュタグ部には仮想アドレスからビット１４〜６を取り出して送出し（Ｓ３０４）、参照した次のサイクルにＲＡＭ内部でタグアドレスの取り出しを行い（Ｓ３０５），その次のサイクルに２ＷＡＹ分の物理アドレスが取り出される（Ｓ３０６）。【００１７】
ＴＬＢ部には仮想アドレスからビット６３〜１３を取り出して送出するとともに、キャッシュメモリの参照を行うアクセス空間を示す情報としてアクセス空間番号ないしアクセス空間のコンテキストＩＤ、セグメントテーブル起点などアクセス空間を示す情報を送出し（Ｓ３０７）、参照した次のサイクルにＴＬＢに登録されている仮想アドレスとアクセス空間を示す情報を比較し一致した登録情報に対応した物理アドレスの取り出しを行い（Ｓ３０８），その次のサイクルに１つの物理アドレスが読み出されて、仮想アドレスから物理アドレスへの変換を完了する（Ｓ３０９）。【００１８】
Ｓ３１０で、タグ部から読み出された２ＷＡＹ分の物理アドレスとＴＬＢ部から読み出された物理アドレスを比較し、これが一致していればキャッシュメモリにフェッチ対象データが存在すると判断し、一致したキャッシュＷＡＹのデータを使用する。Ｓ３１１で、キャッシュタグにおいて一致したＷＡＹを示す情報をキャッシュデータ部に送り、Ｓ３１２で、キャッシュデータ部から読み出された２ＷＡＹのデータの一方を選択し、キャッシュメモリの読み出しを完了する。【００１９】
このあと、命令キャッシュＩＦ−ＬＢＳ１０６においては、読み出された３２バイトのデータがそのまま命令処理装置へと送られ、命令処理装置側では４バイト長の命令８個分の命令として受け取る。オペランドキャッシュＯＰ−ＬＢＳ１０７においては、読み出されたデータは、読み出し対象のデータ幅１バイト、２バイト、４バイト、８バイトに応じて読み出しデータのアライメントを行うと同時に、必要に応じてサイン拡張を行い１バイト、２バイト、４バイトのデータの正負の符号部分を拡張したデータ形式に変換し、アライメントとサイン拡張まで完了したデータを演算器に対して送出する。演算器側では受け取ったデータを受け取り対象となるレジスタに書き込むとともに、受け取ったデータを使用して演算を開始する。【００２０】
キャッシュメモリの読み出し制御において、アクセス開始２サイクル後にキャッシュデータ、キャッシュタグ、ＴＬＢが読み出された時点で、それぞれに備え付けられた故障検出回路により、故障の有無を確認する。故障がなければ、そのまま図３に示した処理手順に従って処理が完了する。故障が検出された場合、それがＴＬＢの故障であった場合は、ＴＬＢを全消去してＴＬＢの登録処理からやり直すが、その詳細についてはここでは説明を省略する。故障がキャッシュデータまたはキャッシュタグにあった場合の従来の処理方式については、特許文献２に開示されている。この従来の処理方式について、以下に説明する。【００２１】
図４、図５に、故障がキャッシュデータまたはキャッシュタグにあった場合の処理動作のフローを示す。図４は、オペランドキャッシュＯＰ−ＬＢＳ１０７におけるデータまたはタグに故障があった場合の故障処理を示しており、図５は、命令キャッシュＩＦ−ＬＢＳ１０６におけるデータまたはタグに故障があった場合の故障処理を示している。【００２２】
まず、図４において、キャッシュデータまたはキャッシュタグに故障が検出されると、ＳＵ１０３内のオペランドキャッシュＯＰ−ＬＢＳ１０７は、データ処理を一時中断し、キャッシュ制御部のＥＲＲＯＲ−ＳＴＡＴＥフラグをオンにする（Ｓ４０１）。エラーしたキャッシュラインアドレスとキャッシュＷＡＹをＥＲＡＲ（Ｅｒｒｏｒ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）に登録する（Ｓ４０２）。ＥＲＡＲには二種類あり、オペランドキャッシュ用のＯＰ−ＥＲＡＲと命令キャッシュ用のＩＦ−ＥＲＡＲがある。いずれもキャッシュラインアドレスビット１４〜５とＷＡＹ情報を保持する。ＥＲＲＯＲ−ＳＴＡＴＥ中は、後続の処理をすべて中断するとともに、それまでに実行中であった処理、例えば主記憶または他のキャッシュメモリへとキャッシュラインを持ってくることを要求する処理が該当するが、この場合キャッシュラインが届いてキャッシュメモリへの登録が完了するのを待つ。【００２３】
この後、下位階層のキャッシュ（ＳＸ１０８）に対して、故障救済処理を実施してもらうことを要求すると共に、オペランドキャッシュＯＰ−ＬＢＳ１０７に故障が発生したことを通知し、ＯＰ−ＥＲＡＲの情報から故障したキャッシュメモリのキャッシュラインアドレスとキャッシュＷＡＹを通知する（Ｓ４０３）。【００２４】
故障救済処理要求を受けた下位階層のキャッシュには、通知元キャッシュタグのコピーを備えており、故障救済処理のためにこれを参照する（Ｓ４０４）。キャッシュタグのコピーには、そのキャッシュラインが有効であるか無効であるかを示すＶａｌｉｄビットとそのキャッシュラインに対応する物理アドレスが情報として格納されている。故障処理を要求されたキャッシュラインが有効かどうか判断し（Ｓ４０５）、故障処理を要求されたキャッシュラインが無効な状態であった場合は（Ｎｏ）、通知されたキャッシュラインに対し故障を原因とした無効化を指示するとともに、それがオペランドキャッシュか命令キャッシュかいずれのキャッシュメモリに対する処理であるかを明示し、故障キャッシュラインおよび故障ＷＡＹ情報をそのまま故障通知元に送り返す（Ｓ４０６）。故障元のキャッシュでは故障を原因とした無効化の指示を受け取ったら、オペランドキャッシュラインの無効化通知を受けたキャッシュラインとキャッシュＷＡＹに対して、オペランドキャッシュタグの有効ビットを無効な状態へと書き換える処理フローをオペランドキャッシュパイプラインで実行する（Ｓ４０７）。書き換え処理を行うオペランドキャッシュパイプラインのＢサイクル（Ｂｕｆｆｅｒ  Ｒｅａｄ  Ｃｙｃｌｅ）と呼ぶフローで、ＥＲＲＯＲ−ＳＴＡＴＥフラグをオフにセットすることで、エラー処理を完了すると共に後続命令の実行を再開し、同時に、キャッシュタグの無効化が完了したことを下位階層のキャッシュに通知するとともに、無効化したキャッシュラインとキャッシュＷＡＹを通知する（Ｓ４０８）。この通知を受けて、下位階層のキャッシュにおいてはキャッシュタグコピーの該当ラインは無効な状態へと書き換えられる（Ｓ４０９）。【００２５】
キャッシュタグコピーを検索した結果、故障処理対象キャッシュラインが有効な状態であれば（Ｓ４０５でＹｅｓの場合）、故障元キャッシュに対し、故障を原因としたキャッシュラインの吐き出しを指示すると共に、それがオペランドキャッシュに対する処理であることを明示し、故障キャッシュラインおよび故障ＷＡＹ情報をそのまま故障通知元に送り返す（Ｓ４１０）。故障元のキャッシュでは、故障を原因としたキャッシュライン吐き出しの指示を受け取ったら、オペランドキャッシュラインの無効化通知を受けたキャッシュラインとキャッシュＷＡＹに対して、オペランドキャッシュタグの参照しつつオペランドキャッシュデータの読み出しを行う処理フロー、およびオペランドキャッシュタグの有効ビットを無効な状態へと書き換えつつオペランドキャッシュデータの読み出しを行う処理フローを実行する（Ｓ４１１）。キャッシュタグを書き換える処理を行うオペランドパイプラインのＢサイクルと呼ぶフローでＥＲＲＯＲ−ＳＴＡＴＥフラグをオフにセットすることで、エラー処理を完了すると共に後続命令の実行を再開し、同時にキャッシュタグを無効化したことを下位階層のキャッシュに通知するとともに、無効化したキャッシュラインとキャッシュＷＡＹを通知する（Ｓ４１４）。オペランドキャッシュＯＰ−ＬＢＳ１０７については、このときデータ転送を伴う場合がある。オペランドキャッシュデータの読み出しは２回実施しており、１回の読み出しで３２バイト読み出すため上記フローでキャッシュメモリ１ライン分に相当する６４バイトのキャッシュデータが読み出され、ＭＯＢ（Ｍｏｖｅ−ｏｕｔ  Ｂｕｆｆｅｒ）と呼ばれる下位階層から指示された要求を処理するに当たって、データ転送を伴う処理の場合に使用されるデータバッファへと格納される。キャッシュタグの参照は、読み出し参照と書き込み参照が行われる。Ｓ４１２、Ｓ４１３で、読み出し参照でキャッシュタグを検索したとき、キャッシュラインが変更型かそれ以外かを確認する。変更型であればキャッシュラインを下位階層に転送し（Ｓ４１５、Ｓ４１６）、無効型または共有型であればキャッシュラインを下位階層に転送しない（Ｓ４０８，Ｓ４０９）。キャッシュラインを転送しないときの処理手順（Ｓ４０８，Ｓ４０９）は、命令キャッシュ側の故障救済処理と同じ処理を行って、キャッシュラインの無効化を完了する。キャッシュラインを転送するとき（Ｓ４１５、Ｓ４１６）は、キャッシュの故障処理がデータ転送を伴って完了することを通知すると共に、処理対象となったキャッシュラインとキャッシュＷＡＹを通知する（Ｓ４１５）。この通知を受けて、下位階層のキャッシュにおいてはキャッシュタグコピーの該当ラインを無効な状態へと書き換えるとともに、受け取ったキャッシュデータを自身のキャッシュ階層のキャッシュメモリのデータ部へと書き込む（Ｓ４１６）。【００２６】
また、図５は命令キャッシュＩＦ−ＬＢＳ１０６におけるデータまたはタグに故障があった場合の故障処理を示しているが、図５において、ＩＦ−ＬＢＳ１０６のキャッシュデータまたはキャッシュタグに故障が検出されるとＳ５０１〜Ｓ５０３の処理を行う。これらの処理は図４の処理Ｓ４０１〜Ｓ４０３と同様である。その後、キャッシュタグコピーの参照結果に関わらず、通知されたキャッシュラインに対し故障を原因とした無効化を指示するとともに、それが命令キャッシュメモリに対する処理であることを明示し、故障キャッシュラインおよび故障ＷＡＹ情報をそのまま故障通知元に送り返す（Ｓ５０４）。故障元のキャッシュでは故障を原因とした無効化の指示を受け取ったら、命令キャッシュラインの無効化通知を受けたキャッシュラインとキャッシュＷＡＹに対して、命令キャッシュタグの有効ビットを無効な状態へと書き換える処理フローを命令キャッシュパイプラインで実行する（Ｓ５０５）。書き換え処理を行う命令キャッシュパイプラインのＢサイクルと呼ぶフローでＥＲＲＯＲ−ＳＴＡＴＥフラグをオフにセットすることで、エラー処理を完了すると共に後続命令の実行を再開する。同時に、キャッシュタグの無効化が完了したことを下位階層のキャッシュに通知するとともに、無効化したキャッシュラインとキャッシュＷＡＹを通知する（Ｓ５０６）。この通知を受けて、下位階層のキャッシュにおいてはキャッシュタグコピーの該当ラインは無効な状態へと書き換えられる（Ｓ５０７）。【００２７】
また、図６は、従来のキャッシュにおけるストア動作のフローを示す図である。
ストア命令に対するキャッシュメモリへの書き込みにおいては、キャッシュタグ部とＴＬＢ部に１回の参照を行い、キャッシュデータ部に対しては２回の参照を行い、オペランドキャッシュパイプラインとしては２回の処理フローが実行される。【００２８】
ストア命令の１回目の処理フローでは、キャッシュデータ部とキャッシュタグ部およびＴＬＢ部にアクセスする。キャッシュデータ部には仮想アドレスからビット１４〜５を取り出して送出し、参照した次のサイクルにＲＡＭ内部でデータの取り出しを行い、その次のサイクルに全キャッシュＲＡＭから合わせて６４バイトのデータが取り出される。取り出されたデータは３２バイトの２ＷＡＹ分のデータから構成される。キャッシュタグ部には仮想アドレスからビット１４〜６を取り出して送出し、参照した次のサイクルにＲＡＭ内部でタグアドレスの取り出しを行い、その次のサイクルに２ＷＡＹ分の物理アドレスが取り出される。ＴＬＢ部には仮想アドレスからビット６３〜１３を取り出して送出すると共に、キャッシュメモリの参照を行うアクセス空間を示す情報としてアクセス空間番号ないしアクセス空間のコンテキストＩＤ、セグメントテーブル起点などアクセス空間を示す情報を送出し、参照する。（Ｓ６０１）
参照した次のサイクルにＴＬＢに登録されている仮想アドレスとアクセス空間を示す情報を比較し一致した登録情報に対応した物理アドレスの取り出しを行い、その次のサイクルに１つの物理アドレスが読み出されて、仮想アドレスから物理アドレスへの変換を完了する。タグ部から読み出された２ＷＡＹ分の物理アドレスとＴＬＢ部から読み出された物理アドレスを比較し、これが一致していればキャッシュメモリにストア対象のデータが存在すると判断する。（Ｓ６０２）
また、キャッシュタグから変更型ビットが読み出され、これが変更型であることを示していれば、キャッシュメモリが共有されておらず、ストアを実行できると判断する。また、一致したキャッシュ情報は、後のキャッシュメモリへの書き込みにおいて使用するためにストア命令処理部に記録する。それと共に、キャッシュタグにおいて一致したＷＡＹを示す情報をキャッシュデータ部に送り、キャッシュデータ部から読み出された２ＷＡＹのデータの一方を選択する。選択されたデータは、キャッシュメモリに対してストアを実行するとき、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）情報を更新後のデータに対応したＥＣＣへと書き換えるために、８バイトデータ境界内におけるストア対象外のデータ保持部または部分ＥＣＣ保持部へと格納される。（Ｓ６０３）尚、ストア対象外のＥＣＣの処理については、特許文献３および特許文献４にその詳細が述べられている。【００２９】
そして、Ｓ６０３の処理の後、キャッシュ側での処理フローとは独立して、ストア命令がストア対象とするストアデータを演算器からオペランドキャッシュが受け取り、これをストアデータレジスタへと格納する（Ｓ６０４）。【００３０】
そして、キャッシュ側の処理フローを完了するとともに、ストアデータのキャッシュへの転送が完了していれば、命令処理装置は、ストア命令を実行できるか否かを判断する（Ｓ６０５、Ｓ６０６）。すなわち、ストア命令に先行する命令で命令処理列の分岐が発生せず、トラップ処理など他の処理に移行する必要がなくなったか否かを確認する。これは、命令処理装置におけるコミット・スタック・エントリにおいて、ストア命令に先行する命令の処理がすべて完了していることを確認することで実行される。すると、命令処理装置は、実行可能となったストア命令に対して、コミット信号をオンにして、ストアを実行することを指示する（Ｓ６０７）。【００３１】
キャッシュ側では、コミット信号を受け取ったストア命令のデータをキャッシュメモリに書き込むために、ストア処理の２回目のフローを実行する（Ｓ６０８）。ストア命令の２回目のフローでは、キャッシュデータ部のみにアクセスする。まず、Ｐサイクル（Ｐｒｉｏｒｉｔｙ  サイクル：各リクエストを決められた優先順位に従って処理するリクエストを決定する）においてキャッシュデータ部には仮想アドレスからビット１４〜５を取り出して送出するとともにストア対象ＷＡＹとストア対象バイト位置を通知する（Ｓ６０９）。この情報によりキャッシュデータ部では、ストア対象となるキャッシュＲＡＭとそのＲＡＭ上のストア対象バイト位置を確認し、対象ＲＡＭの対象バイト位置に対してＷＥ（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）信号をオンにする。それと平行して、ストアデータレジスタに格納されたストアデータを取り出して、キャッシュデータ部へ送出する（Ｓ６１０）。【００３２】
その次のＴサイクル（ＴＬＢ／ＴＡＧ  サイクル：ＴＡＧ／ＬＢＳ／ＴＬＢをアクセスするサイクル）にストア対象キャッシュＲＡＭのストア対象バイト位置へとストアデータが格納される（Ｓ６１１）。【００３３】
そして、Ｔサイクルの３サイクル後のＲサイクル（Ｒｅｓｕｌｔ  サイクル：パイプライン処理を完了するサイクル）においてストアデータとストア対象外データ情報からＥＣＣが生成され、ＥＣＣ−ＡＲＲＡＹ−ＲＡＭへとストア後のデータに対応したＥＣＣ情報を書き込むことで、ストア命令の処理を完了する（Ｓ６１２）。【００３４】
以上のように、ストア命令に対するキャッシュへの書き込み動作について説明したが、ストア処理に伴う１回目の処理フローにおいて、故障が検出された場合は、図３に示したキャッシュの読み出し動作において故障が検出された場合と同じ処理を実行して故障を解消する。【００３５】
次に、図７を参照して、従来のキャッシュにおける故障を含むキャッシュラインを無効化した後の、故障キャッシュラインを使用した命令の処理を再開する動作について説明する。【００３６】
故障キャッシュラインの無効化が完了し、命令の実行が再開されると、再開された命令が使用するキャッシュラインが無効化されているため、キャッシュミスから命令処理が再開されることになる（Ｓ７０１）。再開された命令はキャッシュタグを検索した結果キャッシュミスを検出し（Ｓ７０２）、下位階層のキャッシュへキャッシュミスしたキャッシュラインを自キャッシュへと取り込むためのムーブイン要求を送出するとともに、ムーブイン要求中の物理アドレスおよびムーブイン（ＭＩ：Ｍｏｖｅ−Ｉｎ）したキャッシュラインを登録するキャッシュメモリ上のキャッシュラインアドレスとキャッシュＷＡＹ情報をＭＩＢ（Ｍｏｖｅ  Ｉｎ  Ｂｕｆｆｅｒ）に保持する（Ｓ７０３）。ムーブイン対象となるキャッシュＷＡＹは、無効なＷＡＹがなければＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）に従い、無効なＷＡＹがあればそれが選択される。エラー処理後の命令実行再開時は、キャッシュラインが無効化されているため、無効なキャッシュＷＡＹが選択される。このとき、先のエラー処理で無効化したＷＡＹが選択される。【００３７】
ムーブイン要求を受け取った下位階層のキャッシュでは、そのキャッシュ階層のキャッシュタグを検索する（Ｓ７０４）。キャッシュヒットすれば、そのキャッシュ階層のキャッシュデータ部から取り出したキャッシュデータを要求元キャッシュに転送する（Ｓ７０５）。それと平行して、要求元のキャッシュタグコピーをムーブイン要求アドレスに書き換えるとともに、要求元のキャッシュに対してリプレースブロックに対する指示を送出する（Ｓ７０６）。エラー処理後の命令再開の場合は、リプレースブロック、すなわちムーブイン要求対象のキャッシュラインにムーブイン要求前に登録されていたキャッシュＷＡＹは無効化されているので、リプレース処理が不要であることを要求元のキャッシュに対して指示する。【００３８】
ムーブイン要求元のキャッシュでは、キャッシュラインを受け取ると、受け取ったキャッシュラインを使用して再開した動作を継続すると共に、受け取ったキャッシュラインをキャッシュメモリに書き込む。１回の書き込みで３２バイト書き込まれるため、６４バイトの１キャッシュラインの登録処理には２回の処理フローを実行する。【００３９】
まず、１回目の処理フローで、ＭＩＢに格納されていたキャッシュラインとキャッシュＷＡＹ情報、および受け取ったキャッシュラインの３２バイトをキャッシュデータ部に送り、キャッシュデータ部のＲＡＭに書き込む（Ｓ７０７）。次に２回目のフローで残り３２バイトをキャッシュデータ部のＲＡＭに書き込むと同時に、ＭＩＢに保持していた物理アドレスをキャッシュタグ部に書き込む（Ｓ７０８）と共にキャッシュタグのＶａｌｉｄビットをオンにする（Ｓ７０９）。キャッシュミスを起こしてムーブインを要求した命令以外の命令は、キャッシュメモリへの登録まではＭＩＢからデータを取り出し、登録後はキャッシュタグ部、キャッシュデータ部にアクセスして、キャッシュメモリの内容を取り出す。このとき再び故障が検出されれば、故障処理の一連の処理フローを再度実行し、故障を解消する。【００４０】
故障解消処理フローを規定回数繰り返しても故障が解消されなければ、故障キャッシュラインをブロックデリートと呼ぶ手段で切り離す。ブロックデリート処理については、特許文献５に詳細が記述されている。しかしながら、ブロックデリート処理が実行されると、キャッシュラインを１ライン切り離してしまうことによる性能低下が免れない。そこで、キャッシュラインを喪失せずにキャッシュメモリの１ビット固定故障を救済する方法が求められていた。【００４１】
以上のように、図１〜図７を参照して、キャッシュライン交替レジスタの搭載されていない従来のキャッシュについて説明した。
上述したことをまとめると、従来のキャッシュライン交替レジスタの実装方式では、交替対象アドレスの比較に物理アドレスを使用し、これが一致した際に交替レジスタのデータを読み出していたが、物理アドレスは比較対象ビット数が多いためアドレス処理に時間がかかるという問題があった。また、比較対象となる物理アドレスを得るためには、ＴＬＢやキャッシュタグを参照する必要があるため、キャッシュの読み出しにおいてはキャッシュライン交替レジスタが使用できたが、キャッシュの書き込みにおいては、ＴＬＢ、キャッシュタグの参照比較と書き込みのフローが通常のキャッシュ制御フローから大きく外れたものとなるため、キャッシュライン交替レジスタの使用を放棄せざるを得ず、キャッシュライン交替レジスタがストア対象となるたびに、キャッシュライン交替レジスタを無効化して主記憶参照からやりなおすなど、ストア動作時に性能低下が発生した。【００４２】
また従来は、交替レジスタを１ライン分、全ビット交替できるようにレジスタを構成していた。実際には、１キャッシュライン中複数個所で１ビットエラーが生じる確率は低く、より少ないレジスタ数で交替レジスタの機能を実現し、回路資源を節約することが求められていた。【００４３】
そこで、従来のキャッシュに新しいキャッシュライン交替レジスタを搭載し、問題を解決する。
【特許文献１】特開昭５２−１５２３６号公報
【特許文献２】特許第３４８３２９６号公報
【特許文献３】特願２００６−９９９９０２号
【特許文献４】特願２００６−３５３５０５号
【特許文献５】特願２００６−９９９８２１号
【発明の開示】
【００４４】
本発明は、従来のキャッシュ交替レジスタの問題を解決することにある。詳しくは、キャッシュラインに故障等が発生し交替を行う場合の処理時間を改善すること、および、キャッシュライン交替レジスタがストア対象となるたびに、キャッシュライン交替レジスタを無効化して主記憶参照からやり直すなど、ストア動作時に性能低下が発生していたことを解決すること、および、従来のキャッシュライン交替レジスタのように１ライン分、全ビット交替できるようにレジスタを構成するのではなく、より少ないレジスタ数で構成し、必要とする回路資源を節約すること、を目的とする。
【００４５】
上述の課題を解決するために、本発明では、キャッシュメモリ装置を、複数のキャッシュラインを有するウェイを複数備え、前記キャッシュラインにデータを保持するデータ保持部と、前記データ保持部が有するキャッシュラインの１ライン分又は前記キャッシュラインの一部のデータを保持する交替データレジスタと、キャッシュアクセスに用いられ、前記データ保持部において故障が発生した故障キャッシュライン及び前記故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持する交替アドレスレジスタと、前記データ保持部の故障ビットを含む前記データ保持部におけるウェイの情報を保持する交替ウェイレジスタと、前記データ保持部にアクセスを行う場合に、アクセスに用いられるインデックスアドレスと前記交替アドレスレジスタが保持する前記インデックスアドレスを比較するアドレスマッチ回路と、前記データ保持部にアクセスを行う場合に、アクセスに用いられるウェイ情報と前記交替ウェイレジスタの保持するウェイ情報を比較するウェイマッチ回路と、を備えるように構成した。
【００４６】
本発明によれば、交替対象アドレスの比較に、キャッシュメモリ上の故障キャッシュラインおよび前記キャッシュライン内の故障ビットを含むデータブロックを指し示すインデックスアドレスを使用するため、物理アドレスを用いた場合よりも比較対象のビット幅が小さくなるため、アドレス比較に費やす時間を短縮することが可能であるとともに、ＴＬＢおよびキャッシュタグの参照結果が判明する前に交替アドレスの比較を完了することが可能となる。また、インデックスアドレスの使用により、交替データを保持する交替データレジスタは、故障が発生した故障キャッシュラインの１ライン分の長さよりも短いデータを保持できればよい。このように、交替データレジスタはデータブロックの長さ分だけのデータを保持すればよいため、キャッシュライン交替レジスタに使用される回路サイズを抑えることが可能となり、回路実装面積の削減と電力消費量低減の効果が期待できる。
【００４７】
また、従来のキャッシュ制御フローにおいてはＴＬＢおよびキャッシュタグの参照とデータの書き込みが同時に実施されていたが、本発明のキャッシュライン交替レジスタによれば、ストア命令の処理フローが従来のキャッシュ制御フローと同じままで、キャッシュライン交替レジスタの内容をストアデータに対応して、常に最新の状態に更新することが可能となり、ストア命令においても交替レジスタを使用できるため、ストア対象が交替レジスタにあった場合に発生した性能低下を回避することが可能となる。
【図面の簡単な説明】
【００４８】
【図１】従来のＣＰＵの全体構成を示す図である。
【図２】従来のキャッシュの構成を示す図である。
【図３】従来のキャッシュの読み出し動作を説明するフロー図である。
【図４】従来のＯＰ−ＬＢＳに故障があった場合の故障処理を説明するフロー図である。
【図５】従来のＩＦ−ＬＢＳに故障があった場合の故障処理を説明するフロー図である。
【図６】従来のキャッシュのストア動作を説明するフロー図である。
【図７】従来のキャッシュにおいて、キャッシュラインを無効化した後、故障キャッシュラインを使用した命令の処理を再開する動作を説明するフロー図である。
【図８】本実施形態のＣＰＵの全体構成を示す図である。
【図９】本実施形態のキャッシュの構成を示す図である。
【図１０】本実施形態の交替アドレスレジスタの構成について説明する図である。
【図１１】本実施形態におけるキャッシュの読み出し動作を説明するフロー図である。
【図１２】本実施形態におけるＯＰ−ＬＢＳに故障があった場合の故障処理を説明するフロー図である。
【図１３】本実施形態におけるＩＦ−ＬＢＳに故障があった場合の故障処理を説明するフロー図である。
【図１４】本実施形態におけるキャッシュにおいて、キャッシュラインを無効化した後、故障キャッシュラインを使用した命令の処理を再開する動作を説明するフロー図である。
【図１５】本実施形態におけるストア動作を説明するフロー図である。
【図１６】本実施形態において交替アドレスレジスタのビット数を１ビット増やした場合の説明をする図である。
【図１７】本実施形態における交替アドレスレジスタと交替データレジスタの物量関係を示す図である。
【図１８】本実施形態における交替アドレスレジスタ更新モードがオンの場合の処理について説明する図である。
【図１９】本実施形態における交替アドレスレジスタ更新モードがオフの場合の処理について説明する図である。
【発明を実施するための最良の形態】
【００４９】
以下、図面を参照して、キャッシュライン交替レジスタの実施形態の一例について説明する。
本実施形態である、ＣＰＵの全体構成を図８に示す。【００５０】
図８のＣＰＵ１の構成は、図１に示したＣＰＵ１０１の構成とほぼ同一である。ＣＯＲＥ２は図１のＣＯＲＥ１０２に対応し、ＳＵ３は図１のＳＵ１０３に対応し、ＩＵ４は図１のＩＵ１０４に対応し、ＥＵ５は図１のＥＵ１０５に対応し、ＩＦ−ＬＢＳ６は図１のＩＦ−ＬＢＳ１０６に対応し、ＯＰ−ＬＢＳ７は図１のＯＰ−ＬＢＳ１０７に対応し、ＳＸ１０は図１のＳＸ１０８に対応し、ＳＹＳＴＥＭ  ＢＵＳ１１，Ｍｅｍｏｒｙ１２はそれぞれ図１のＳＹＳＴＥＭ  ＢＵＳ１０９，Ｍｅｍｏｒｙ１１０に対応する。【００５１】
本実施の形態では、新たにＩＦ−ＣＬＡＲ（Ｃａｃｈｅ  Ｌｉｎｅ  Ａｌｔｅｒｎａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ：キャッシュライン交替レジスタ）８，ＯＰ−ＣＬＡＲ９が追加される。【００５２】
図９に、本実施形態のキャッシュライン交替レジスタＣＬＡＲの構成を示し、  図２と比較すると本実施の形態で追加された部分が明らかである。
キャッシュＲＡＭ２１、２２における、キャッシュラインは６４バイト単位で管理され、キャッシュＲＡＭは６４キロバイトの容量を２ＷＡＹで構成している。１ＷＡＹあたりのキャッシュライン数は５１２ラインとなり、キャッシュラインへのアクセスアドレスは９ビットで構成される。キャッシュデータＲＡＭには読み出しデータ幅８バイトでライン数１０２４のＲＡＭ８個を採用している。【００５３】
本実施の形態のキャッシュライン交替レジスタは、３種類のレジスタと２種類のマッチ回路から構成される。第１のレジスタは、１ビット固定故障キャッシュラインとそのエラービット箇所がキャッシュメモリ上の何処にあるかを指し示すインデックスアドレスを登録し、保持する交替アドレスレジスタ２６（ＣＬＡＡＲ：Ｃａｃｈｅ  Ｌｉｎｅ  Ａｌｔｅｒｎａｔｉｏｎ  Ａｄｄｒｅｓｓ  Ｒｅｇｉｓｔｅｒ）である。第２のレジスタは、１ビット固定故障キャッシュラインのＷＡＹ情報を登録し、保持する交替ＷＡＹレジスタ２７である。第３のレジスタは、ＲＡＭ固定故障キャッシュラインの半ライン分のデータを登録し、保持する交替データレジスタ２５（ＣＬＡＤＲ：Ｃａｃｈｅ  Ｌｉｎｅ  Ａｌｔｅｒｎａｔｉｏｎ  Ｄａｔａ  Ｒｅｇｉｓｔｅｒ）である。また、第１のマッチ回路は、インデックスアドレスを比較するアドレスマッチ回路２８である。第２のマッチ回路は、ＷＡＹを比較するＷＡＹマッチ回路２９である。【００５４】
データ信号線３０にはＷＡＹ０（２１）の出力データが出力され、データ信号線３１にはＷＡＹ１（２２）の出力データが出力され、信号線３２には、アドレスマッチ回路２８で比較された結果であるＣＬＡＡＲ−ＭＣＨ信号が出力され、信号線３３には、ＷＡＹマッチ回路２９で比較された結果であるＷＡＹ−ＭＣＨ信号が出力され、データ線３４には、交替データレジスタ２５の出力データが出力され、信号線３５には、ＷＡＹ０ＣＬＡＡＲ−ＭＣＨ信号が出力され、信号線３６にはＷＡＹ１ＣＬＡＡＲ−ＭＣＨ信号が出力される。３７は、ＷＡＹ０側のキャッシュＲＡＭ（２１）と交替データレジスタ２５の選択回路で、３８はＷＡＹ１側のキャッシュＲＡＭ（２２）と交替データレジスタ２５の選択回路である。データ線３９には、命令処理装置または演算装置に送るデータが出力される。【００５５】
図１０に交替アドレスレジスタ２６についての説明を示す。本実施の形態では、故障の発生したエラービット箇所がキャッシュメモリ上のどこにあるかを指し示すためにキャッシュメモリをブロック０およびブロック１からなる二つのブロックに分割している。つまり、インデックスアドレスは、キャッシュラインアドレス（アクセスアドレス）用の９ビットと、故障ブロックを示すための１ビットを合わせた、計１０ビットから成る。そのため、交替アドレスレジスタ２６は故障の発生したキャッシュラインを示すアクセスアドレスのための９ビット（仮想アドレスからビット１４〜６を取り出したもの）と、いずれのブロックに故障が発生したのかを示す１ビット（仮想アドレスからビット５を取り出したもの）とを保持する。そして、交替データレジスタ２５は、各ブロックのサイズである３２バイトのデータを保持できればよい。【００５６】
図９、図１０に示した構成のキャッシュの動作について、フロー図を用いて以下に詳細に説明する。
まず、図１１に本実施形態におけるキャッシュの読み出し動作を説明するフロー図を示す。キャッシュの読み出しにおいては、従来通りキャッシュデータ部およびキャッシュタグ部およびＴＬＢ部を参照すると同時に、交替アドレスレジスタに対してアクセスする。図１１におけるＳ１１０１〜Ｓ１１１２の処理は、従来のキャッシュ読み出し動作を示した図３のＳ３０１〜Ｓ３１２と同一の処理を行うものである。【００５７】
本実施の形態では、Ｓ１１２０〜Ｓ１１２５に示した処理がキャッシュライン交替レジスタにおいて行われる。
まず、キャッシュデータ部を参照するサイクルに交替アドレスレジスタ２６に格納されているインデックスアドレスとキャッシュデータ部の参照に使用したキャッシュのインデックスアドレス及びキャッシュＷＡＹを交替アドレスレジスタ２６の保持する内容と交替ＷＡＹレジスタ２７の保持する内容とそれぞれ比較する（Ｓ１１２０）。そしてＣＬＡＡＲ−ＷＡＹ信号とＣＬＡＤＲデータを取り出す（Ｓ１１２１）。比較結果を示すＣＬＡＡＲ−ＭＣＨ信号と、交替ＷＡＹレジスタ２７に格納された交替対象ＷＡＹを示すＣＬＡＡＲ−ＷＡＹ信号、および交替データレジスタ２５の内容を全キャッシュデータＲＡＭへと送出する（Ｓ１１２２）。その次のサイクルにＳ１１２３で、ＣＬＡＡＲ−ＭＣＨ信号およびＷＡＹ−ＭＣＨ信号がオンであれば、全キャッシュＲＡＭから読み出された６４バイトのデータに対して、ＣＬＡＲＲ−ＷＡＹ信号が示すＷＡＹの３２バイトデータを交替データレジスタ２５の内容と差し替えてキャッシュ読み出しデータとする（Ｓ１１２４）。Ｓ１１２３で、ＣＬＡＡＲ−ＭＣＨ信号がオフであれば、全キャッシュＲＡＭから読み出された６４バイトデータには操作を施さず（Ｓ１１２５）、キャッシュメモリから読み出されたデータをそのまま使用する。【００５８】
この後は、従来のキャッシュ装置と同じ動作を行い、すなわち、タグマッチ結果からキャッシュＷＡＹのデータの一方を選択し、キャッシュメモリの読み出しを完了する。このようにキャッシュライン交替レジスタの機能は、故障が発生していないときにも有効になるように機能させている。【００５９】
次に、図１２、図１３に本実施形態におけるＯＰ−ＬＢＳおよびＩＦ−ＬＢＳに故障があった場合の故障処理を説明するフロー図をそれぞれ示す。故障があった場合の故障処理においても、従来の処理と同様の処理を行うが、図１２では、Ｓ１２１７、Ｓ１２１８、Ｓ１２１９、Ｓ１２２０の処理が追加され、図１３ではＳ１３０８，Ｓ１３０９の処理が追加され、それ以外の処理は同様である。図１２のＳ１２０１〜Ｓ１２１６までの処理は図４のＳ４０１〜Ｓ４１６までの処理に対応し、図１３のＳ１３０１〜Ｓ１３０７までの処理は図５のＳ５０１〜Ｓ５０７までの処理に対応する。【００６０】
さて、キャッシュデータのＲＡＭに故障が検出されたとき、すなわち、ＣＬＡＡＲ−ＭＣＨ信号がオンにならずにキャッシュデータ部の故障が検出されたときは、キャッシュデータＲＡＭから読み出されたデータに故障が検出されたことを示す。このとき、従来の故障処理フローにおける故障キャッシュラインを無効化するために、キャッシュタグの有効ビットを無効な状態に書き換えるパイプライン処理のＲサイクルの２サイクル後のタイミングで、無効化対象キャッシュインデックスとキャッシュＷＡＹを交替アドレスレジスタ２６と交替ＷＡＹレジスタ２７に書き込む（Ｓ１２１８、Ｓ１２２０，Ｓ１３０９）。【００６１】
以上の動作により、故障キャッシュラインとそのＷＡＹがキャッシュライン交替レジスタに登録されるため、故障したキャッシュラインを参照したときは、キャッシュライン交替データレジスタの内容が参照されることとなり、故障したキャッシュＲＡＭの内容は使用されなくなるため、キャッシュＲＡＭの故障を隠蔽し、故障からの回復を図ることが可能である。【００６２】
尚、Ｓ１２１７、Ｓ１２１９、Ｓ１３０８のモードについての説明は後述することとする。
次に図１４に、キャッシュラインを無効化した後、故障キャッシュラインを使用した命令の処理を再開する動作を示す。キャッシュラインの無効化後の故障キャッシュラインを再開する動作についても、従来の処理と同様の処理を行う。すなわち図１４のＳ１４０１〜Ｓ１４０９の処理は図７のＳ７０１〜Ｓ７０９に対応する。そして、図１４のＳ１４１０〜Ｓ１４１９に示すキャッシュライン交替レジスタで行われる処理が追加されたものとなる。【００６３】
故障キャッシュラインの無効化を完了し故障キャッシュインデックスを交替アドレスレジスタ２６に登録した後、命令の実行が再開されると再開された命令が使用するキャッシュラインは交替アドレスレジスタ２６に登録されている。このキャッシュラインは、まだキャッシュミスを起こした状態であるため、従来通りキャッシュラインのムーブインが要求される。その後、キャッシュラインが届くと、キャッシュインデックスとキャッシュＷＡＹをキャッシュデータ部に指示しつつ、ムーブインしたキャッシュラインをキャッシュデータ部に送出し、キャッシュラインの登録を指示する。【００６４】
キャッシュデータ部では、キャッシュラインの登録指示を受け取った次のサイクルに、受け取ったキャッシュインデックスとキャッシュＷＡＹに対応するキャッシュデータＲＡＭにムーブインデータを書き込むと共に、書き込み対象のキャッシュインデックスとキャッシュＷＡＹを交替アドレスレジスタ２６の保持する内容と交替ＷＡＹレジスタ２７の保持する内容とそれぞれ比較する（Ｓ１４１０、Ｓ１４１１）。Ｓ１４１２で、キャッシュインデックスアドレスとキャッシュＷＡＹが両方一致していればムーブインデータを交替データレジスタ２５にも書き込む（Ｓ１４１３）。Ｓ１４１２で一致しない場合には、なにも書きこまない（Ｓ１４１４）。こうすることで、キャッシュに書き込んだデータが故障していても、そのデータは交替データレジスタ２５に用意しておくことが可能となる。そのため、故障キャッシュラインを読み出す等の参照がある場合に、キャッシュライン交替レジスタに格納されたデータを参照するため、同データの故障していない状態のデータを取り出すことが可能となる。【００６５】
尚、Ｓ１４１５〜Ｓ１４１９の処理はＳ１４１０〜Ｓ１４１４の処理と同一である。
次に、本実施の形態におけるストア命令に対するキャッシュへの書き込みについて図１５を参照して説明する。ストア命令に対するキャッシュへの書き込み処理においても従来
通りキャッシュタグ部とＴＬＢ部に１回の参照を行い、キャッシュデータ部に対しては２回の参照を行う。また、図１５のＳ１５０１〜Ｓ１５１２の処理は、図６に示した従来のストア命令に対するキャッシュへの書き込み処理のＳ６０１〜Ｓ６１２と同一の処理を行う。【００６６】
図１５において、まずストア命令の１回目の処理フローでは、交替アドレスレジスタ２６と交替データレジスタ２５によりキャッシュデータの故障が救済される（Ｓ１５０１〜Ｓ１５０７）。【００６７】
ストア命令の２回目の処理フローでは、Ｐサイクルにおいてキャッシュインデックスアドレスとストア対象ＷＡＹおよびストア対象バイト位置をキャッシュデータ部に指示しつつ（Ｓ１５０９）、ストア対象ＲＡＭのストア対象バイト位置に対してＷＥ（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）信号をオンにする（Ｓ１５１３）。それと平行して、ストアデータレジスタに格納されたストアデータを取り出して、キャッシュデータ部へ送出する（Ｓ１５１０）。その次のサイクルのＴサイクルにおいて、ストア対象キャッシュＲＡＭのストア対象バイト位置へとストアデータを格納すると共に、インデックスアドレスとストア対象ＷＡＹを交替アドレスレジスタ２６と交替ＷＡＹレジスタ２７の内容と比較する（Ｓ１５１４）。Ｓ１５１５で比較した結果、交替アドレスレジスタ２６および交替ＷＡＹレジスタ２７の内容と一致した場合、ストア対象バイト位置を示す情報に基づいて、交替データレジスタ２５のストア対象位置にストアデータを書き込む（Ｓ１５１６）。Ｓ１５１５で比較した結果が一致しなければ、交替データレジスタ２５には何も書き込まず（Ｓ１５１７）、処理を終了する。その後のＲサイクルにおいてＥＣＣ処理を従来通り実行する（Ｓ１５１８）。こうすることで、ストア命令の実行においても、交替データレジスタ２５の内容をキャッシュの最新の状態に更新することが可能となるため、後続の命令がキャッシュライン交替レジスタの交替対象となるキャッシュラインを参照したときにも、最新の状態のキャッシュデータに対応したデータをキャッシュライン交替データレジスタから取り出すことが可能となるため、キャッシュの故障からは開放されることになる。【００６８】
そのため、ロード命令だけでなくストア命令においてもキャッシュライン交替レジスタを使用できるため、ストア対象がキャッシュライン交替レジスタにあった場合に発生した性能低下を回避することが可能となる。【００６９】
以上のように本実施の形態について説明したが、上述の説明では交替アドレスレジスタ２６の保持するビット数を図１０に示すように構成した。
すなわち、インデックスアドレスを保持する交替アドレスレジスタ２６を、故障キャッシュラインのアクセスアドレスを示す９ビットと、故障ブロックを示す１ビットの合計１０ビットから成るように構成した。【００７０】
ここで、インデックスアドレスを１ビット増やし、キャッシュの故障ブロックを示すために用いる。これにより、キャッシュを分割するブロック数を２倍に増やすことができ、更に、キャッシュデータのリプレースを行うデータサイズが２分の１になるため、交替データレジスタ２５のサイズも２分の１にすることが可能である。【００７１】
同様にしてインデックスアドレスを１ビットずつ増やしていくと、交替データレジスタ２５のサイズを半減させていくことが可能である。このことを図１６に図示した。
まず図１６（ａ）では、交替アドレスレジスタ２６の保持するビット数を１１ビットとしたものを示している。故障キャッシュラインのラインアドレスであるアクセスアドレスを示すために９ビット、故障ブロックを示すために２ビットの合計１１ビットを保持する。これにより、キャッシュブロック数は４ブロックとなり、キャッシュデータのリプレースを行うデータサイズが図１０で示した３２バイトの半分の１６バイトとなる。【００７２】
同様に、図１６（ｂ）では、交替アドレスレジスタ２６の保持するビット数を１２ビット、すなわち、アクセスアドレスを示すために９ビット、故障ブロックを示すために３ビットの合計１２ビットとしたものを示している。これにより、キャッシュブロック数は８ブロックとなり、キャッシュデータのリプレースを行うデータサイズを図１６（ａ）の半分の８バイトとすることができる。【００７３】
図１６（ｃ）についても同様に交替アドレスレジスタ２６の保持するビット数を１ビット増やすと、キャッシュデータのリプレースを行うデータサイズを図１６（ｂ）に示したものから半減することが可能である。【００７４】
図１７には、このことをまとめて、交替アドレスレジスタ２６のビット数と交替データレジスタの物量関係を示した。交替アドレスレジスタ２６のビット数が１ビット増加すると交替データのサイズが半減していることがわかる。【００７５】
また、本実施の形態において、交替アドレスレジスタ２６の更新は、キャッシュラインが無効化されるときに行うことが出来る。そこでキャッシュリプレース（交替）発生時の交替アドレスレジスタ２６更新を行うモードを設ける。このモードがオンのときは、交替対象ブロックを無効化するリプレース処理の２回目のフローで交替対象のキャッシュインデックスで交替アドレスレジスタ２６を更新する。こうすることで、通常動作中も交替アドレスレジスタ２６が頻繁に更新することが可能となる。交替アドレスレジスタ２６の更新は固定故障発生時のみとする方式と比べて交替アドレスレジスタ２６の更新頻度および更新タイミングの発生パターンが増加するため、交替アドレスレジスタ２６制御に関する設計ミスの検出を容易にすることが可能となる。尚、上述の図１２のＳ１２１７、Ｓ１２１９、図１３のＳ１３０８では、交替アドレスレジスタ２６更新モードであるか否かが判断されている。【００７６】
また、キャッシュデータ部は、ＣＰＵチップの出荷に当たって全キャッシュメモリセルの試験を行う必要がある。キャッシュメモリセルの試験を行うときに交替アドレスレジスタ２６の更新をリプレースでも行うことで、交替アドレスレジスタ機能により保護されたまま試験による故障チェックから漏れるキャッシュメモリセルが発生することを回避することも可能となる。【００７７】
例えば、試験の開始状態において、交替アドレスレジスタ２６がアドレス「０ＷＡＹ０」となっていると、アドレス０、ＷＡＹ０はキャッシュライン交替レジスタにより故障が起こらない限り交替対象とされてしまう。よって、アドレス０、ブロック０、ＷＡＹ0のキャッシュＲＡＭのデータはキャッシュライン交替レジスタの内容で置き換えて読み出されてしまう（図１８の交替アドレスレジスタ更新モードがオフの場合、を参照）。ここで、交替アドレスレジスタ更新モードをオンとすると、リプレース（交替）が行われる度に、交替対象のキャッシュインデックスおよびキャッシュＷＡＹで交替アドレスレジスタ２６が更新されるためアドレス０、ＷＡＹ０のキャッシュラインが故障チェックから漏れることを回避できる（図１９の交替アドレスレジスタ更新モードがオンの場合、を参照）。【００７８】
以上のように、本実施形態について詳細に説明をしたが、本発明は上述した実施の形態に限定されるものではなく、上述した各構成と同等の機能を実現するものであればいずれのものであってもよいことはいうまでもない。【００７９】
本発明によれば、交替対象アドレスの比較に、キャッシュメモリ上の故障キャッシュラインおよび前記キャッシュライン内の故障ビットを含むデータブロックを指し示すインデックスアドレスを使用するため、物理アドレスを用いた場合よりも比較対象のビット幅が小さくなるため、アドレス比較に費やす時間を短縮することが可能であるとともに、ＴＬＢおよびキャッシュタグの参照結果が判明する前に交替アドレスの比較を完了することが可能となる。また、インデックスアドレスの使用により、交替データを保持する交替データレジスタは、故障が発生した故障キャッシュラインの１ライン分の長さよりも短いデータを保持できればよい。このように、交替データレジスタはデータブロックの長さ分だけのデータを保持すればよいため、キャッシュライン交替レジスタに使用される回路サイズを抑えることが可能となり、回路実装面積の削減と電力消費量低減の効果が期待できる。【００８０】
また、従来のキャッシュ制御フローにおいてはＴＬＢおよびキャッシュタグの参照とデータの書き込みが同時に実施されていたが、本発明のキャッシュライン交替レジスタによれば、ストア命令の処理フローが従来のキャッシュ制御フローと同じままで、キャッシュライン交替レジスタの内容をストアデータに対応して、常に最新の状態に更新することが可能となり、ストア命令においても交替レジスタを使用できるため、ストア対象が交替レジスタにあった場合に発生した性能低下を回避することが可能となる。
【図１】
2008155805.tif 000003
【図２】
2008155805.tif 000004
【図３】
2008155805.tif 000005
【図４】
2008155805.tif 000006
【図５】
2008155805.tif 000007
【図６】
2008155805.tif 000008
【図７】
2008155805.tif 000009
【図８】
2008155805.tif 000010
【図９】
2008155805.tif 000011
【図１０】
2008155805.tif 000012
【図１１】
2008155805.tif 000013
【図１２】
2008155805.tif 000014
【図１３】
2008155805.tif 000015
【図１４】
2008155805.tif 000016
【図１５】
2008155805.tif 000017
【図１６】
2008155805.tif 000018
【図１７】
2008155805.tif 000019
【図１８】
2008155805.tif 000020
【図１９】
2008155805.tif 000021
【手続補正書】
【提出日】平成21年8月5日(2009.8.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のキャッシュラインを有するウェイを複数備え、前記キャッシュラインにデータを保持するデータ保持部と、
前記データ保持部が有するキャッシュラインの１ライン分又は前記キャッシュラインの一部のデータを保持する交替データレジスタと、
キャッシュアクセスに用いられ、前記データ保持部において故障が発生した故障キャッシュライン及び前記故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持する交替アドレスレジスタと、
前記データ保持部の故障ビットを含む前記データ保持部におけるウェイの情報を保持する交替ウェイレジスタと、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるインデックスアドレスと前記交替アドレスレジスタが保持する前記インデックスアドレスを比較するアドレスマッチ回路と、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるウェイ情報と前記交替ウェイレジスタの保持するウェイ情報を比較するウェイマッチ回路と、
を備えることを特徴とするキャッシュメモリ装置。
【請求項２】
前記データ保持部への読み出し参照アクセスの際、前記アドレスマッチ回路による比較結果が一致した場合に、前記交替ウェイレジスタの保持するウェイ情報に対応するウェイから読み出したデータを前記交替データレジスタの内容と差し替えて前記データ保持部からの読み出しデータとすることを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項３】
前記データ保持部への書き込み参照アクセスの際、前記アドレスマッチ回路および前記ウェイマッチ回路による比較結果が両方とも一致した場合に、前記データ保持部の書き込み対象ウェイにデータを書き込むと共に、前記交替データレジスタにデータを書き込み、該交替データレジスタの内容をデータ保持部の最新の状態に合わせることを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項４】
前記データ保持部上に故障ビットが検出された場合に、該故障ビットを含むキャッシュラインに保持していたデータを下の階層のキャッシュメモリまたは主記憶に対して必要に応じて書き戻しを行うとともに、該キャッシュラインを無効化し、無効化が完了したときに無効化対象となったキャッシュラインのアドレスを前記交替アドレスレジスタに保持し、無効化対象となったキャッシュウェイを前記交替ウェイレジスタに保持することを特徴とする請求項１乃至請求項３いずれか１項に記載のキャッシュメモリ装置。
【請求項５】
キャッシュメモリ装置の動作モードが、キャッシュリプレース発生時に前記交替アドレスレジスタの更新を行うキャッシュリプレースモードである場合に、キャッシュリプレース対象のキャッシュインデックスアドレスおよびキャッシュウェイで前記交替アドレスレジスタと前記交替ウェイレジスタを更新することを特徴とする請求項１記載のキャッシュメモリ装置。
【請求項６】
キャッシュメモリ装置と前記キャッシュメモリ装置に保持されたデータに対して演算を行う演算処理部とを備えた演算処理装置であって、
複数のキャッシュラインを有するウェイを複数備え、前記キャッシュラインにデータを保持するデータ保持部と、
前記データ保持部が有するキャッシュラインの１ライン分又は前記キャッシュラインの一部のデータを保持する交替データレジスタと、
キャッシュアクセスに用いられ、前記データ保持部において故障が発生した故障キャッシュライン及び前記故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持する交替アドレスレジスタと、
前記データ保持部の故障ビットを含む前記データ保持部におけるウェイの情報を保持する交替ウェイレジスタと、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるインデックスアドレスと前記交替アドレスレジスタが保持する前記インデックスアドレスを比較するアドレスマッチ回路と、
前記データ保持部にアクセスを行う場合に、アクセスに用いられるウェイ情報と前記交替ウェイレジスタの保持するウェイ情報を比較するウェイマッチ回路と、
を備えることを特徴とする演算処理装置。
【請求項７】
前記データ保持部への読み出し参照アクセスの際、前記アドレスマッチ回路による比較結果が一致した場合に、前記交替ウェイレジスタの保持するウェイ情報に対応するウェイから読み出したデータを前記交替データレジスタの内容と差し替えて前記データ保持部からの読み出しデータとすることを特徴とする請求項６記載の演算処理装置。
【請求項８】
前記データ保持部への書き込み参照アクセスの際、前記アドレスマッチ回路および前記ウェイマッチ回路による比較結果が両方とも一致した場合に、前記データ保持部の書き込み対象ウェイにデータを書き込むと共に、前記交替データレジスタにデータを書き込み、該交替データレジスタの内容をデータ保持部の最新の状態に合わせることを特徴とする請求項６記載の演算処理装置。
【請求項９】
前記データ保持部上に故障ビットが検出された場合に、該故障ビットを含むキャッシュラインに保持していたデータを下の階層のキャッシュメモリまたは主記憶に対して必要に応じて書き戻しを行うとともに、該キャッシュラインを無効化し、無効化が完了したときに無効化対象となったキャッシュラインのアドレスを前記交替アドレスレジスタに保持し、無効化対象となったキャッシュウェイを前記交替ウェイレジスタに保持することを特徴とする請求項６乃至請求項８いずれか１項に記載の演算処理装置。
【請求項１０】
前記キャッシュメモリ装置の動作モードが、キャッシュリプレース発生時に前記交替アドレスレジスタの更新を行うキャッシュリプレースモードである場合に、キャッシュリプレース対象のキャッシュインデックスアドレスおよびキャッシュウェイで前記交替アドレスレジスタと前記交替ウェイレジスタを更新することを特徴とする請求項６記載の演算処理装置。
【請求項１１】
複数のキャッシュラインを有するウェイを複数備えるデータ保持部と、アドレスの比較を行うアドレスマッチ回路と、前記ウェイの比較を行うウェイマッチ回路と、キャッシュラインの交替を制御する第１乃至第３のレジスタを備えたキャッシュメモリの制御方法であって、
前記データ保持部の前記キャッシュラインにデータを保持するステップと、
前記第１のレジスタに、前記データ保持部が有するキャッシュラインの１ライン分又は前記キャッシュラインの一部のデータを保持するステップと、
前記第２のレジスタに、キャッシュアクセスに用いられ、前記データ保持部において故障が発生した故障キャッシュライン及び前記故障キャッシュライン内の故障発生部を指し示すインデックスアドレスを保持するステップと、
前記第３のレジスタに、前記データ保持部の故障ビットを含む前記データ保持部におけるウェイの情報を保持するステップと、
前記データ保持部にアクセスを行う場合に、前記アドレスマッチ回路により、アクセスに用いられるインデックスアドレスと前記第２のレジスタが保持する前記インデックスアドレスを比較するステップと、
前記データ保持部にアクセスを行う場合に、前記ウェイマッチ回路により、アクセスに用いられるウェイ情報と前記第３のレジスタが保持する情報を比較するステップと、
を備えることを特徴とする制御方法。
【国際調査報告】
2008155805.tif 000022
2008155805.tif 000023
2008155805.tif 000024
2008155805.tif 000025