(57)【要約】【課題】記憶装置で発生したエラーに対して、簡易かつ的確にエラーを解析し、エラーの状況を取得できるようにする。【解決手段】故障解析回路は、故障がある記憶領域に記憶された故障データと交替レジスタのデータとを比較する比較回路と、比較回路による比較結果データからエラービット位置を特定する位置特定回路と、を備える。【選択図】図６
2013061887.tif 000002
【特許請求の範囲】
【請求項１】
記憶部と、データが書き込まれる前記記憶部内の記憶領域に故障があるときに前記記憶領域の代替領域としてデータを保持する交替レジスタとに接続される故障位置判定回路であって、
故障がある記憶領域に記憶された故障データと、前記交替レジスタが保持するデータとを比較する比較回路と、
前記比較回路による比較結果に基づいて、前記故障データの故障ビット位置を特定する位置特定回路と、を備える故障位置判定回路。
【請求項２】
前記比較回路は、前記故障データと前記交代レジスタが保持するデータとの排他論理和を求める回路であり、
前記位置特定回路は、
前記比較回路から出力される排他論理和データを所定長さの断片データに区分して、区分された断片データごとに前記断片データの各ビットの論理和データを取得する論理和回路と、
前記論理和データによって、故障データを区分した断片データのうち、故障ビットを含む故障断片データを選択する選択回路と、を有する請求項１に記載の故障位置判定回路。
【請求項３】
前記位置特定回路は、前記交替データを区分した交替断片データのうち、前記故障断片データに対応する交替断片データを前記論理和データによって選択する回路をさらに備える請求項２に記載の故障位置判定回路。
【請求項４】
前記位置特定回路は、前記故障断片データ中の故障ビットに対応する、前記交替断片データ中の交替ビットを前記故障断片データによって選択する回路をさらに備える請求項３に記載の故障位置判定回路。
【請求項５】
記憶部と、
前記記憶部内でデータが書き込まれる記憶領域に故障があるときに前記記憶領域の代替領域としてデータを保持する交替レジスタと、
前記故障がある記憶領域に記憶された故障データと前記交替レジスタのデータとを比較する比較回路と、
前記比較回路による比較結果データからエラービット位置を特定する位置特定回路と、を備える記憶装置。
【請求項６】
記憶装置と前記記憶装置に記憶されたデータを処理する処理部とを含み、前記記憶装置は、
記憶部と、
前記記憶部内でデータが書き込まれる記憶領域に故障があるときに前記記憶領域の代替領域としてデータを保持する交替レジスタと、
前記故障がある記憶領域に記憶された故障データと前記交替レジスタのデータとを比較する比較回路と、
前記比較回路による比較結果データからエラービット位置を特定する位置特定回路と、を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、故障位置判定回路、記憶装置、および情報処理装置に関する。
【背景技術】
【０００２】
半導体技術の微細化に伴い、情報処理装置に搭載される記憶装置、例えば、キャッシュに含まれる記憶素子も微細化し、記憶情報の反転等によるエラーが発生しやすくなってきた。また、記憶装置内部の回路については、動作周波数の向上を目指して内部動作タイミングの調整値のマージンが削減されてきている。マージンが削減されると、動作可能な電圧あるいは温度等の動作条件が制限されるため、例えば、信号電圧の変動、電源電圧の変動等に例示される電圧変動あるいは温度変動等に対する耐性が低くなってきている。こうした事情により、従来とは異なる性質、種類のエラーが発生するようになってきている。
【０００３】
従来、記憶装置で生じるエラーへの対策としては、例えば、Error Correcting Code（
ＥＣＣ、誤り訂正符号）による誤り訂正、パリティチェックによる誤り検出等が行われてきた。
【０００４】
一方、キャッシュRandom Access Memory（ＲＡＭ）等の記憶装置に発生したエラーに対して、キャッシュライン交替レジスタによってエラーを回避する技術が提案されている。キャッシュＲＡＭにエラーが発生すると、エラー箇所を含むキャッシュラインが無効化され、キャッシュＲＡＭへのデータの再登録が行われる。そして、キャッシュＲＡＭのエラー箇所へのアクセスが発生すると、エラー箇所のデータに代えて、キャッシュライン交替レジスタのデータが用いられ、エラーのないデータが提供される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４５９５０２９号公報
【特許文献２】特開昭５９−２０７０９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、近年、記憶装置で発生したエラーに対して、エラービット位置の判定やビットの反転方向などを調査して、記憶装置の性能改善などのフィードバックを実施するケースが多くなっている。しかし、エラービット位置の判定やビットの反転方向などの調査のためＥＣＣによる技術を用いると、ＥＣＣのシンドローム解析に資源と手間がかかる。また、パリティチェックによる技術では、パリティチェックによる故障が検出されたデータの範囲、つまり、パリティチェック符号に対応するデータの範囲よりも細かく被疑箇所が特定できない。
【０００７】
一方、キャッシュライン交替レジスタによって、キャッシュＲＡＭのエラー箇所を救済できても、エラー箇所についての解析を行うことができない。
【０００８】
１つの側面では、本発明は、記憶装置で発生したエラーの発生箇所の解析を行うことを目的とする。
【課題を解決するための手段】
【０００９】
開示の技術の一側面は、記憶部と前記記憶部内でデータが書き込まれる記憶領域に故障があるときに記憶領域の代替領域としてデータを保持する交替レジスタとに接続される故
障解析回路によって例示できる。本故障解析回路は、故障がある記憶領域に記憶された故障データと交替レジスタのデータとを比較する比較回路と、比較回路による比較結果データからエラービット位置を特定する位置特定回路と、を備える。
【発明の効果】
【００１０】
本故障解析回路によれば、記憶装置で発生したエラーの発生箇所を解析することができる。
【図面の簡単な説明】
【００１１】
【図１】ＣＰＵの構成を例示する図である。
【図２】交替レジスタの更新動作を例示する図である。
【図３】交替レジスタの読み出し動作を例示する図である。
【図４】キャッシュＲＡＭと交替レジスタとのエラー検出回路を例示する図である。
【図５】交替レジスタと比較回路の構成を例示する図である。
【図６】故障位置判定回路を例示する図である。
【図７】故障ビット判定用に保持されるデータの解析例である。
【図８】固定故障ビット判定結果の履歴を保持する回路の例である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下の実施形態の構成は例示であり、本情報処理装置は実施形態の構成には限定されない。
【実施例】
【００１３】
図１に、情報処理装置に含まれるCentral Processing Unit（ＣＰＵ、中央処理装置）
１の構成を例示する。なお、情報処理装置は、ＣＰＵ１の他、図示しない主記憶装置、周辺装置、外部記憶装置、およびネットワークカード等を含む。また、情報処理装置には、ディスプレイ、入力装置等を含めてもよい。ＣＰＵ１が処理部の一例である。
【００１４】
図１のように、ＣＰＵ１は、例えば、Instruction Unit（ＩＵ、命令発行部）、
Execution Unit（ＥＵ、演算処理部）、１次キャッシュである命令キャッシュ２、１次キャッシュであるオペランドキャッシュ３、および２次キャッシュブロック４を含む。
【００１５】
ＩＵは、命令キャッシュ２から命令を取得し、ＥＵに供給する。ＥＵは、ＩＵから供給された命令に応じた演算を実行する。演算の対象となるデータが主記憶装置に指定されていた場合に、ＥＵは、オペランドキャッシュ３を通じて演算の対象となるデータを取得する。演算完了後、演算結果の格納先が主記憶装置の場合、ＥＵは、オペランドキャッシュ３を通じて演算結果を主記憶装置に格納する。
【００１６】
命令キャッシュ２は、２次キャッシュブロック４を通じた図示しない主記憶装置からの命令の読み出し（フェッチともいう）の際、主記憶装置のバッファ記憶として、主記憶装置に代わって高速に命令をＩＵに引き渡す。命令キャッシュ２は、主記憶装置よりも高速かつ小容量である。
【００１７】
同様に、オペランドキャッシュ３は、２次キャッシュブロック４を通じた図示しない主記憶装置からのデータの読み出しの際、主記憶装置のバッファ記憶として、主記憶装置に代わって高速にデータをＥＵに引き渡す。オペランドキャッシュ３は、主記憶装置よりも高速かつ小容量である。
【００１８】
図１の例では、１次キャッシュ（命令キャッシュ２、オペランドキャッシュ３）と、図示しない主記憶装置との間に、２次キャッシュブロック４が設けられている。２次キャッ
シュブロック４は、命令キャッシュ２、あるいはオペランドキャッシュ３と同様、主記憶装置よりも高速で小容量のバッファ記憶装置としての機能を提供する。ただし、２次キャッシュブロック４は、命令キャッシュ２、あるいはオペランドキャッシュ３よりも低速かつ大容量であることが多い。なお、２次キャッシュブロック４と主記憶装置との間に、さらに、３次キャッシュブロックを設けてもよい。命令キャッシュ２、あるいはオペランドキャッシュ３等は、記憶装置の一例である。以下、命令キャッシュ２、あるいはオペランドキャッシュ３等を総称してキャッシュＲＡＭという。
【００１９】
ＣＰＵ１は、キャッシュＲＡＭをエラーから救済するため、キャッシュライン交替レジスタを有している。以下、キャッシュライン交替レジスタを交替レジスタという。すなわち、ＣＰＵ１は、交替レジスタによるリカバリフローを有するＣＰＵであるとする。ただし、ＣＰＵ１が交替レジスタを有するという場合、キャッシュＲＡＭが交替レジスタを有している場合も含む。また、交替レジスタには、キャッシュされるデータを保持する交替データレジスタ、キャッシュされるデータのアドレスを保持する交替アドレスレジスタ、および交替データレジスタのデータに対応するキャッシュされるデータが保持されるキャッシュのＷＡＹを示す交替ＷＡＹレジスタを含む。
【００２０】
本実施形態の情報処理装置では、ＣＰＵ１の１次キャッシュＲＡＭにおいて固定故障が発生した場合、固定故障に対するリカバリフローが行われ、交替レジスタにエラーのない、正しいデータが登録される。ここで、固定故障は、故障がある程度の期間以上継続する故障をいい、したがって、一時的に生じる故障、例えば、アルファー線等の影響でビットが反転するソフトエラーのようなものは固定故障から除外される。本実施例ではキャッシュＲＡＭの故障のうち、固定故障を取り扱う。また、本実施例では、記憶装置においてデータの誤りが発生する故障をエラーともいう。
【００２１】
さらに、ＣＰＵ１は、交替レジスタに正しいデータが登録された後に、キャッシュＲＡＭから読み出したデータと交替レジスタから読み出したデータとを比較する比較回路と、比較回路による比較の結果からエラービットを特定する位置特定回路とを有する。比較回路と位置特定回路により検出されたエラービットを含むデータは、リテイン回路などに保持される。リテイン回路に保持するのは、エラー箇所をデバック等で解析できるようにするためである。
【００２２】
保持されたデータを解析することにより固定故障したビット位置を特定することが可能である。以下、キャッシュＲＡＭ等の記憶装置に対する救済方法を例示するため、ＣＰＵ１の構成と動作を説明する。ただし、本記憶装置が以下の構成に限定される訳ではない。
【００２３】
図２に、キャッシュＲＡＭ２０と交替データレジスタ２２の更新動作を例示する。キャッシュＲＡＭ２０は、例えば、ＲＡＭ部１９と、キャッシュＲＡＭ２０故障時の救済機能を提供するリカバリ回路とを含む。リカバリ回路は、交替アドレスレジスタ２１、交替データレジスタ２２、比較器２３、およびイネーブル生成回路２４を含む。なお、キャッシュＲＡＭ２０は、さらに、交替ＷＡＹレジスタを含むが、図２では省略している。キャッシュＲＡＭ２０が記憶装置の一例であり、ＲＡＭ部１９が記憶領域の一例である。
【００２４】
ＲＡＭ部１９は、キャッシュＲＡＭ２０の記憶素子列を有するメモリ領域である。実施例では、ＲＡＭ部１９の構成に関しては、特に限定はない。ＲＡＭ部１９は、例えば、２ＷＡＹ構成とする。また、ＲＡＭ部１９は、例えば、ワード数５１２、１ワードのデータ幅８バイトのＲＡＭを８個有する。したがって、この例では、ＲＡＭ部１９の容量は、５１２×８×８＝３２ＫＢとなる。また、キャッシュライン数、および１キャッシュライン当たりのバイト数には特に限定は、ない。ただし、１つのキャッシュラインは、複数のブロックに区分され、ＲＡＭ部１９にアクセスするアドレスによって、キャッシュラインお
よびキャッシュライン中のブロックを識別可能とする。一方、交替データレジスタは、キャッシュライン中の１つのブロックに対応するデータを保持可能な容量を有する。例えば、キャッシュライン１２８バイト、１ブロック３２バイトであれば、交替レジスタは３２バイトを保持可能であるとする。また、キャッシュライン１２８バイト、１ブロック８バイトであれば、交替レジスタは８バイトを保持可能であるとする。さらに、交替レジスタは２ＷＡＹ共通で機能とする。すなわち、交替レジスタは、故障した一方のＷＡＹのデータを保持する。ただし、例えば、複数のＷＡＹが同時に故障する場合を考慮して、複数のＷＡＹに対応した交替レジスタを用意してもよい。
【００２５】
以下、交替データレジスタ２２が代替して保持するデータが本来のキャッシュＲＡＭ２０（ＲＡＭ部１９）に格納されるとき、キャッシュＲＡＭ２０での格納先のアドレスを交替アドレスという。また、交替データレジスタ２２に保持されるデータが本来のキャッシュＲＡＭ２０に格納されるとき、キャッシュＲＡＭ２０での格納先のＷＡＹを交替ＷＡＹという。実施例では、交替アドレスの初期値アドレスを０番、交替ＷＡＹを０とする。つまり、初期状態では、交替データレジスタ２２は、キャッシュＲＡＭ２０のアドレス＝０、ＷＡＹ＝０のデータを保持するように設定する。
【００２６】
キャッシュＲＡＭ２０において、交替アドレス（初期値０）以外のアドレス、かつ交替ＷＡＹ以外のＷＡＹの領域に対して、１ビット固定故障が発生した場合を想定する。図２の例では、アドレス＝ｉのワードを含むキャッシュラインが故障したとする。この場合には、エラーリカバリフローが行われる。以下、エラーリカバリフローの概要を説明する。まず、固定故障箇所（アドレス＝ｉ）を含むキャッシュラインの無効化が行われる。無効化されたキャッシュラインでは、キャッシュラインごとに設けられる図示しない無効化フラグ等に無効が設定される。
【００２７】
キャッシュラインにエラーが発生すると、エラーが発生したキャッシュラインが無効化されるとともに、交替アドレスレジスタ２１の交替アドレス、交替ＷＡＹレジスタの交替ＷＡＹが更新される。例えば、交替アドレスレジスタ２１には、エラーが発生した故障キャッシュラインと、故障キャッシュライン中のエラーが発生したブロックを指定する情報が登録される。実施例では、エラーが発生した故障キャッシュラインと、故障キャッシュライン中のエラーが発生したブロックを指定する情報が交替アドレスである。また、エラーが発生したＷＡＹは、交替ＷＡＹレジスタに登録される。
【００２８】
無効化処理が完了すると、固定故障キャッシュラインに対するアクセスが開始され、無効化されたキャッシュラインは、キャッシュミス状態となる。キャッシュミス状態になったキャッシュラインは下位階層のキャッシュ等へのムーブイン要求（ｒｅｆｉｌｌ）を行う。ムーブイン要求によってムーブイン処理が行われ、下位階層からのエラーのない正しいデータがエラーキャッシュラインに対して再登録される。図２のアドレス＝ｉを含むハッチング部分が、再登録されたキャッシュラインに相当する。キャッシュＲＡＭ２０に対する再登録が行なわれるとともに、交替レジスタ２２に対しても、再登録されたデータと同一のデータが登録され、ムーブイン処理が完了する。
【００２９】
例えば、本実施例では、キャッシュライン１２８バイト、交替データレジスタ２２の容量が３２バイトである場合には、再登録された１２８バイトのキャッシュラインのデータのうち、交替アドレスレジスタ２１の交替アドレスで特定されるブロック（３２バイト）が交替データレジスタ３２に登録される。
【００３０】
そのため、キャッシュラインへのアクセス時のキャッシュＲＡＭ２０へのアクセスアドレスと、交替アドレスとが比較器２３で比較され、マッチ信号が生成される。マッチ信号は、イネーブル生成回路２４においてライトイネーブル信号ＷＥとＡＮＤゲートで演算さ
れ、イネーブル信号が生成される。そして、イネーブル信号により、交替データレジスタ２２が書き込み可能となり、交替データレジスタの内容が更新される。
【００３１】
図３に、交替データレジスタの読み出し動作を例示する。ムーブイン処理が完了すると、キャッシュＲＡＭ２０に対するアクセス要求が受け付けられ、固定故障ラインに対する読み出し（ＬＯＡＤ）が行われる。このとき、キャッシュＲＡＭ２０に固定故障があるので、キャッシュＲＡＭ２０からはエラーを含むデータが読み出される。キャッシュＲＡＭ２０から読み出されたデータのアドレスおよびＷＡＹ番号と交替アドレスレジスタ２１の交替アドレス、および交替ＷＡＹレジスタの交替ＷＡＹとが比較器２３で比較される。ただし、図３では、交替ＷＡＹレジスタは省略されている。
【００３２】
そして、キャッシュＲＡＭ２０から読み出されたデータのアドレスと交替アドレスレジスタ２１の交替アドレスとが一致し、キャッシュＲＡＭ２０から読み出されたデータのＷＡＹ番号と交替ＷＡＹレジスタの交替ＷＡＹとが一致すると、比較器２３によりマッチ信号が生成される。ただし、図３では、キャッシュＲＡＭ２０から読み出されたデータのアドレスと交替アドレスレジスタ２１の交替アドレスとの比較に関わる回路が例示され、ＷＡＹ番号と交替ＷＡＹレジスタの交替ＷＡＹとの比較に関する回路は省略されている。マッチ信号により、交替データレジスタ２２から読み出されたデータが選択されて、故障のない正しいデータがＩＵに対してＬＯＡＤされる。
【００３３】
図４は、キャッシュＲＡＭ２０と交替レジスタとのエラー検出回路を例示する図である。図４では、キャッシュＲＡＭ２０は、４系統設けられている。ただし、本記憶装置において、キャッシュＲＡＭ２０の構成が４系統のものに限定される訳ではなく、キャッシュＲＡＭ２０が単一の系統であってもよいし、４系統以上の系統を有してもよい。
【００３４】
図４では、各系統のキャッシュＲＡＭ２０は、それぞれＷＡＹ０とＷＡＹ１とを有する。また、それぞれの系統のキャッシュＲＡＭ２０は、ＷＡＹ０とＷＡＹ１に共通に、交替データレジスタ２２を有する。さらに、各系統のキャッシュＲＡＭ２０において、ＷＡＹ０、ＷＡＹ１、および交替データレジスタ２２で発生したエラーを検出するエラー検出回路が設けられている。エラー検出回路は、例えば、パリティチェック回路、Cyclic Redundancy Check（ＣＲＣ、巡回冗長検査）回路等である。
【００３５】
エラー検出回路において、ＷＡＹ０またはＷＡＹ１のエラーが検出されると、エラーが検出された故障キャッシュラインが無効化される。また、故障キャッシュラインと、故障キャッシュライン中のブロックとを示す交替アドレスが交替アドレスアドレスレジスタ２１（図３参照）に登録される。
【００３６】
一方、キャッシュＲＡＭ２０からのデータ読み出し時には、交替アドレスレジスタ２１のデータ（交替アドレス）と、キャッシュＲＡＭ２０にアクセスするアドレスとが一致するか否かに応じて、キャッシュＲＡＭ２０および交替データレジスタ２２のいずれか一方のデータが選択されて、ＩＵに出力される。なお、図４では、キャッシュＲＡＭ２０として、命令キャッシュ２を想定しているので、データは、ＩＵに出力されている。一方、キャッシュＲＡＭ２０として、オペランドキャッシュ３を想定した場合には、選択されたデータは、ＥＵに出力される。
【００３７】
図５は、命令キャッシュ２として例示されるキャッシュＲＡＭ２０内の交替レジスタと比較回路の構成を例示する図である。図５は、例えば、図４のキャッシュＲＡＭ２０の１つの系統をさらに具体化したものである。ただし、図５では、故障検出回路は省略されている。以下、キャッシュＲＡＭ２０の動作を図５の構成を例にして説明する。
【００３８】
図５のように、キャッシュＲＡＭ２０は、ＲＡＭ部１９を有し、ＲＡＭ部１９は、キャッシュＲＡＭ  ＷＡＹ０とキャッシュＲＡＭ  ＷＡＹ１とを有する。また、キャッシュＲＡＭ２０は、ＲＡＭ部１９とともに、キャッシュライン交替レジスタとして３種類のレジスタを有する。第１のレジスタは、固定故障のキャッシュラインとそのエラービットを含むブロックがキャッシュメモリ上の何処にあるかを指し示すアドレスを登録し、保持する交替アドレスレジスタ２１（ＣＬＡＡＲ：Ｃａｃｈｅ Ｌｉｎｅ Ａｌｔｅｒｎａｔｉｏｎ
Ａｄｄｒｅｓｓ Ｒｅｇｉｓｔｅｒ）である。第２のレジスタは、固定故障のキャッシュラインのＷＡＹ情報を登録し、保持する交替ＷＡＹレジスタ２５である。第３のレジスタは、固定故障のキャッシュラインの中の１つのブロックのデータを登録し、保持する交替データレジスタ２２（ＣＬＡＤＲ：Ｃａｃｈｅ Ｌｉｎｅ Ａｌｔｅｒｎａｔｉｏｎ Ｄａ
ｔａ Ｒｅｇｉｓｔｅｒ）である。ここで、固定故障のキャッシュラインの中の１つのブ
ロックの位置を示すアドレスは、交替アドレスレジスタ２１に保持される。
【００３９】
さらに、キャッシュＲＡＭ２０は、交替レジスタに付随して２つのマッチ回路を有する。第１のマッチ回路は、キャッシュＲＡＭ２０に入力されるアドレスと交替アドレスレジスタ２１の値とを比較するアドレスマッチ回路２６である。第２のマッチ回路は、キャッシュＲＡＭ２０に入力されるＷＡＹの指定情報と交替ＷＡＹレジスタ２５の値とを比較するＷＡＹマッチ回路２７である。
【００４０】
さらに、キャッシュＲＡＭ２０は、ＲＡＭ部１９からの読み出しデータと交替データレジスタ２２からのデータのいずれかを選択する交替レジスタ選択回路２Ａと、ＷＡＹ０とＷＡＹ１のいずれかを選択するＷＡＹ選択回路２Ｂとを有している。ＷＡＹ選択回路２Ｂで選択されたデータは、ＩＵに出力される。ただし、キャッシュＲＡＭ２０が命令キャッシュ２に限定される訳ではない。したがって、例えば、キャッシュＲＡＭ２０がオペランドキャッシュ３の場合には、ＷＡＹ選択回路２Ｂの出力は、ＥＵに出力される。
【００４１】
さらに、キャッシュＲＡＭ２０は、キャッシュＲＡＭ２０でエラーが発生したときに、エラーが発生したキャッシュラインと、キャッシュライン上のビット位置を解析する故障位置判定回路３０を有している。以下、図５により、キャッシュＲＡＭ２０の動作を例示する。
【００４２】
（１）キャッシュＲＡＭ２０からの読み出し（エラーなしの場合）；
キャッシュＲＡＭ２０からの読み出し時、ＲＡＭ部１９には、アドレス信号Ｌ１とＷＡＹ選択信号Ｌ２が供給される。なお、キャッシュＲＡＭ２０からの読み出し時、ライトイネーブル信号Ｌ３は、ネゲート（例えば、値０に設定）されているとする。同様に、ＲＡＭ部１９でエラーが検出されていないときには、交替アドレスレジスタ２１および交替ＷＡＹレジスタ２５は、いずれも書き込めないように、図示しないライトイネーブル信号がネゲートされているとする。
【００４３】
ＲＡＭ部１９にアドレス信号Ｌ１が供給されると、ＷＡＹ０およびＷＡＹ１から、アドレス信号Ｌ１に対応するキャッシュライン内のブロックのデータが読み出される。本実施例では、１キャッシュラインには例えば、４つのブロックがあり、アドレス信号Ｌ１は、キャッシュラインとキャッシュライン内のブロックとを指定する。
【００４４】
アドレス信号Ｌ１は、交替アドレスレジスタ２１に入力される。このとき、交替アドレスレジスタ２１の図示しないライトイネーブル信号がネゲートされているので、アドレス信号Ｌ１は、交替アドレスレジスタ２１には書き込まれない。同様に、ＷＡＹ選択信号Ｌ２も、交替ＷＡＹレジスタ２５には書き込まれない。
【００４５】
ＲＡＭ部１９でエラーが検出されていない状態では、アドレス信号Ｌ１が指定するアド
レスは、交替アドレスレジスタ２６の値と一致しない。したがって、アドレスマッチ回路２６の比較結果は、偽（例えば、値０）となり、ＡＮＤゲート２９は、遮断となる。したがって、交替データレジスタ２２の値は、更新されない。
【００４６】
また、図５では、ＡＮＤゲート２８は、２つの２入力ＡＮＤゲートを有する。アドレス信号Ｌ１が指定するアドレスと交替アドレスレジスタ２６の値とが一致しない場合、ＡＮＤゲート２８のいずれの２入力ＡＮＤゲートも、一方の入力が値０となる。したがって、ＡＮＤゲート２８の出力信号である、交替ＷＡＹ０−ｓｅｌ（選択）信号Ｌ４、および交替ＷＡＹ１−ｓｅｌ（選択）信号Ｌ５は、ともに値０を出力する。すると、交替レジスタ選択回路２Ａは、交替データレジスタ２２からの信号を選択せず、ＲＡＭ部１９のＷＡＹ０とＷＡＹ１のデータを選択する。選択されたＲＡＭ部１９のＷＡＹ０とＷＡＹ１のデータは、ＷＡＹ選択回路２Ｂに入力される。そして、ＷＡＹ選択信号Ｌ２が、ＷＡＹ選択回路２Ｂに出力され、ＷＡＹ選択信号Ｌ２に応じて、ＷＡＹ０またはＷＡＹ１からの読み出しデータがＩＵに出力される。
【００４７】
（２）キャッシュＲＡＭ２０でエラーが検出された場合；
キャッシュＲＡＭ２０のいずれかのアドレスでエラーが検出された場合を仮定する。キャッシュＲＡＭでエラーが検出されると、図２に示した手順にしたがって、交替アドレスレジスタ２１には、ＲＡＭ部１９内でエラーが発生したキャッシュライン中の１つのブロックを示すアドレスが格納される。同様に、交替ＷＡＹレジスタ２５には、エラーが発生したＷＡＹを示す情報が格納される。このとき、エラーが発生したアドレスのブロックを含むキャッシュラインは無効化される。
【００４８】
（３）キャッシュＲＡＭ２０からの読み出し（エラーありの場合）；
ＲＡＭ部１９でエラーが検出されたアドレスからの読み出しが発生すると、図３に示した手順にしたがって、交替データレジスタ２２の情報が更新される。すなわち、無効化されたキャッシュラインがミスヒットになり、下位階層、例えば、図１の２次キャッシュブロック４等のキャッシュ装置あるいは下位層の記憶装置からデータが読み出され、アドレス信号Ｌ１とＷＡＹ選択信号Ｌ２で特定されるＲＡＭ部１９のキャッシュラインに下位層のデータが登録される。
【００４９】
このとき、（２）の処理により、交替アドレスレジスタ２１には、エラーが発生したキャッシュライン内のブロックを特定するアドレスが設定されている。したがって、アドレスマッチ回路２６は、真（例えば、値１）を出力する。同様に、交替ＷＡＹレジスタ２５には、エラーが発生したＷＡＹを特定する情報（ＷＡＹ番号）が設定されている。したがって、ＷＡＹマッチ回路２７は、真（例えば、値１）を出力する。また、ライトイネーブル信号Ｌ３がアサートされる（例えば、値１出力）。その結果、ＡＮＤゲート２９は、出力信号が真（値１）となり、交替データレジスタ２２は書き込み可能となる。その結果、下位階層からキャッシュライン中のエラーが検出されたブロックに登録されるデータと同一のデータが交替データレジスタ２２に登録される。
【００５０】
また、アドレスマッチ回路２６が真（例えば、値１）を出力すると、ＡＮＤゲート２８の２つの２入力ＡＮＤゲートは、いずれも一方の入力が値１となる。したがって、ＡＮＤゲート２８は、交替ウェイレジスタ２５の値を基に、交替ＷＡＹ０−ｓｅｌ（選択）信号Ｌ４、および交替ＷＡＹ１−ｓｅｌ（選択）信号Ｌ５のいずれか一方がアサートされる。例えば、交替ＷＡＹ０−ｓｅｌ（選択）信号Ｌ４がアサートされると、交替レジスタ選択回路２Ａにおいて、ＲＡＭ部１９のＷＡＹ０からのデータは遮断され、交替データレジスタ２２のデータが選択される。このとき、交替ＷＡＹ１−ｓｅｌ（選択）信号Ｌ５は、ネゲートされるので、交替レジスタ選択回路２Ａにおいて、ＲＡＭ部１９のＷＡＹ１からのデータが選択され、交替データレジスタ２２のデータからのデータは遮断される。なお、
交替ＷＡＹ１−ｓｅｌ（選択）信号Ｌ５がアサートされた場合には、交替レジスタ選択回路２Ａの選択は、ＷＡＹ０とＷＡＹ１のそれぞれにおいて、交替ＷＡＹ０−ｓｅｌ（選択）信号Ｌ４がアサートされた場合と逆になる。
【００５１】
そして、ＷＡＹ選択信号Ｌ２がＷＡＹ選択回路２Ｂに入力され、該当するＷＡＹのデータがＩＵに出力される。以降、上記エラーが検出されたキャッシュラインのブロックからの読み出しが発生すると、上記と同様の手順で、交替データレジスタ２２の値が出力される。
【００５２】
さらに、キャッシュＲＡＭ２０で故障が検出されると、故障位置判定回路３０は、比較回路によって、故障が検出されたアドレスのＷＡＹのデータと、交替データレジスタ２２のデータとを比較する。比較の結果、アドレス信号Ｌ１およびＷＡＹ選択信号Ｌ２で特定されるキャッシュラインのブロックと、交替データレジスタ２２のデータが不一致となるビット位置が、故障ビットを示す。そこで、キャッシュＲＡＭ２０は、比較回路によって特定されたビット位置をリテイン回路に保持する。
【００５３】
つまり、交替アドレスレジスタ２１の値とＲＡＭ部１９のアクセスアドレスの値が一致した場合に、交替データレジスタ２２のデータとキャッシュＲＡＭ２０から読み出したデータとを比較することで、読み出しデータ幅分の比較結果が得られる。ただし、比較結果をそのままリテイン回路に保持するとデータ幅分のリソースを使用する。そこで、本実施例では、使用されるリソースを減らすために、固定故障ビットを含む１バイトを保持できるように比較結果のデータを選択する回路を用意する。
【００５４】
図６は、故障位置判定回路３０の構成を例示する図である。故障位置判定回路３０は、比較回路３１を有している。比較回路３１は、エラーが発生したアドレスとＷＡＹの番号とで指定されるキャッシュライン中のブロックのデータと、交替データレジスタ２２のデータとを比較する。なお、図６では、説明を簡略化するため、８バイト（６４ビット）を処理する回路が例示されている。すなわち、以下の図６の説明では、キャッシュラインの１ブロックは、８バイトであり、かつ、交替データレジスタ２２のデータ幅も８バイトであると仮定して説明する。ただし、キャッシュＲＡＭ２０において、キャッシュライン中のブロックのデータ幅、および交替データレジスタ２２のデータ幅に限定がある訳ではない。
【００５５】
比較回路３１は、例えば、キャッシュライン中の１ブロックのデータと、交替データレジスタ２２のデータとの間で、排他論理和（Exclusive OR）を実行する回路である。ただし、比較回路３１は、ＷＡＹ０のイネーブル信号(ＷＡＹ０−ＥＮＢ)と、制御モード信号（cntl_mode）が真（例えば、値１）のとき、ＡＮＤゲート３６からイネーブル信号を入
力され、動作可能となる。
【００５６】
比較回路３１は、出力信号である６４ビットの比較結果パターンをバイト単位ＯＲ回路３２と、セレクタ３３に入力する。セレクタ３３は、マルチセレクタであり、８組の１バイトデータから１バイトデータを選択する。バイト単位ＯＲ回路３２は、６４ビットの比較結果パターンを１バイト（８ビット）ごとに区分して、それぞれのバイトごとに８ビットのＯＲ演算を実行する。１バイトごとのデータが断片データの一例である。
【００５７】
すると、６４ビットの比較結果パターン中のビット値１を含むバイトの論理和が１となる。一方、６４ビットの比較結果パターン中で、全ビット０のバイトの論理和が０となる。したがって、８ビットのビットパターンErr_byte[7:0]が得られる。バイト単位ＯＲ回
路３２と、セレクタ３３とが位置特定回路の一例である。また、バイト単位ＯＲ回路３２が論理和回路の一例である。また、セレクタ３３が選択回路の一例である。
【００５８】
得られた８ビットのビットパターンErr_byte[7:0]をセレクタ３３の選択信号に設定す
ることによって、比較回路３１が出力した６４ビットの比較結果パターンのうち、ビット値１（エラービット）を含むバイトデータであるErr_bit[7:0]（エラーバイトと呼ぶ）が得られる。Err_bit[7:0]は、リテインレジスタ３９に保持される。エラーバイトErr_bit[7:0]が故障断片データの一例である。
【００５９】
また、８ビットのビットパターンErr_byte[7:0]中のビット値１の位置が、６４ビット
の比較結果パターン中のエラーバイトの位置を示している。エラーバイトの位置を示す８ビットのビットパターンErr_byte[7:0]は、リテインレジスタ３８に保持される。
【００６０】
同様に、交替データレジスタ２２の交替データ[63:0]が、セレクタ３４に入力される。セレクタ３４も、マルチセレクタであり、８組の１バイトデータから１バイトデータに選択する。８ビットのビットパターンErr_byte[7:0]は、セレクタ３４の選択信号としても
設定される。その結果、エラーバイトの位置に対応する交替データレジスタ２２の交替データ[63:0]中のバイトデータbit[7:0]が選択される。選択されたバイトデータbit[7:0]は、エラーバイトに対する正解データということができる。バイトデータbit[7:0]が交替断片データの一例である。また、セレクタ３４が、交替断片データを論理和データによって選択する回路の一例である。
【００６１】
したがって、正解データであるbit[7:0]をセレクタ３５に入力し、エラーバイトErr_bit[7:0]を選択信号とすることにより、正解データ中のエラービットに対応する正解ビット値を得ることができる。正解ビット値は、故障方向ビットとして、リテインレジスタ４０に保持される。正解ビット値が交替ビットデータの一例である。また、セレクタ３５が交替ビットデータを故障断片データによって選択する回路の一例である。
【００６２】
図７は、故障ビット判定用に保持されるデータの解析例である。図７のように、Err-byte[6]=1、かつ、Err-bit[2]=1であるので、キャッシュＲＡＭ２０からのデータＢｙｔｅ
０からＢｙｔｅ７の６４ビットのデータbit[63:0]うち、bit[50]がエラーであることが分かる。なお、さらに、リテインレジスタ４０の値が１の場合には、正しいデータが１であるので、エラーは、ビット０に固定する故障、あるいは、ビット１を０に反転する故障であることが分かる。逆に、リテインレジスタ４０の値が０の場合には、正しいデータが０であるので、エラーは、ビット１に固定する故障、あるいは、ビット０を１に反転する故障であることが分かる。すなわち、リテインレジスタ４０の値により、エラーの方向を特定できる。
【００６３】
なお、図６では、比較回路３１のイネーブル信号を生成するため、ＷＡＹ０のイネーブル信号ＷＡＹ０−ＥＮＢ、およびモード信号cntl-modeがＡＮＤゲート３６に入力される
。そして、ＷＡＹ０のイネーブル信号ＷＡＹ０−ＥＮＢと、モード信号cntl-modeの両方
がアサートされたときに、比較回路３１はイネーブルとなる。したがって、モード信号cntl-modeがネゲートされている場合には、比較回路３１は動作しない。同様に、リテイン
レジスタ３８−４０のイネーブル信号を生成するため、リテインレジスタのイネーブル信号Retain-enbと、モード信号cntl-modeがＡＮＤゲート３７に入力され、リテインレジス
タ３８−４０のイネーブル信号が生成される。したがって、モード信号cntl-modeがネゲ
ートされている場合には、リテインレジスタ３８−４０は動作しない。なお、信号Retain-enbは、リテインレジスタの有効無効を制御する信号である。このように、比較回路３１、リテインレジスタ３８−４０等に、固定故障のビット調査用のモード信号cntl-modeを
用意することにより、出荷の品質評価時やデバッグ時に回路の動作を有効し、例えば、出荷後は回路の動作を停止させることができる。このようなモード信号cntl-modeにより、
例えば、出荷後における、故障位置判定回路３０の不要な動作を抑制し、省電力対応をと
ることも容易に可能となる。モード信号cntl-modeは、省電力用モード信号ということも
できる。
【００６４】
図８は、固定故障ビット判定結果の履歴を保持する回路の例である。図６、図７では、Err-byte[7:0]を保持するリテインレジスタ３８、Err-bit[7:0]を保持するリテインレジ
スタ３９、および故障方向ビットを保持するリテインレジスタ４０で、エラーの解析結果が保持された。したがって、ＣＰＵ１は、交替データレジスタ２２のビット数（例えば、６４ビット）に比較して、少ないビット数でエラーの解析結果を保持する。このように、実施例のＣＰＵ１では、回路規模を少なくすることができるので、数世代前までの情報を記録することが可能になる。以下に数世代の情報保持回路について説明する。
【００６５】
図８のように、実施例のＣＰＵ１では、リテインレジスタ_１とリテインレジスタ_２を用意する。なお、信号Retain-enbは、キャッシュＲＡＭ２０の読み出しの有効無効を制御する信号である。また、信号cntl_modeは、図７と同様、出荷の品質評価時やデバッグ時
に回路の動作を有効し、例えば、出荷後は回路の動作を停止させるための信号である。図７で説明したように、キャッシュＲＡＭ２０にエラーが発生すると、交替アドレスレジスタ２１の交替アドレスに対応するキャッシュＲＡＭ２０の領域からデータが読み出される。そして、図６で例示した故障位置判定回路３０の処理により、エラーが解析され、解析結果の情報は、リテインレジスタ_１に登録される。次に、もう一度、キャッシュＲＡＭ
２０にエラーが発生すると、同様の手順で新たなエラーが解析され、解析結果のデータが得られる。新たな解析結果のデータはリテインレジスタ_１に登録される。ただし、この
とき、予めリテインレジスタ_１に登録されていたデータはリテインレジスタ_２に登録されていたデータと比較される。そして、比較の結果、不一致した情報(アドレス、エラー
バイト位置、エラービット位置)があれば、新たな解析結果のデータが得られる前に、予
めリテインレジスタ_１に登録されていたデータはリテインアドレス２に登録される。こ
のような回路を追加することにより数世代前のエラー情報を保持することができ、デバック効率を上げることが可能となる。
【００６６】
＜実施例の効果＞
以上述べたように、実施例１のＣＰＵ１は、キャッシュＲＡＭ２０のエラー発生時、エラーが発生したキャッシュラインのブロックのデータと、交替データレジスタ２２の値を比較回路３１で比較する。そして、ＣＰＵ１は、比較結果のデータにより、固定故障ビットの位置を特定することができる。特に、実施例のＣＰＵ１は、エラーバイト位置に対応する交替アドレスデータレジスタ２２の正解データのバイトを取得する。さらに、実施例のＣＰＵ１は、固定故障ビットの位置を基に、正解データのバイト中の正解ビットを取得する。したがって、実施例１によれば、単ビット故障したビット位置を判定することができる。したがってＲＡＭの冗長機能により、単ビット救済を行うことが容易に可能となる。例えば、キャッシュライン中のブロック対して、１ビットの冗長ビットセルを設けた冗長機能を想定する。上記実施例のように、故障バイト位置と故障ビット位置が特定できると、故障ビットを含むブロックのアドレスがアクセスされ、故障ビット位置と一致するビットラインがアクセスされた場合に、故障ビットに代えて冗長ビットセルを用いるようにすればよい。
【００６７】
さらに、上記実施例の処理では、比較回路３１の比較結果を１バイトずつのバイトデータに分割し、バイト内の８ビットをＯＲゲートに入力し、バイトごとのＯＲ処理を実行する。その結果、エラーが発生したバイト位置を１バイトにつき１ビットの情報で特定できる。例えば、８バイト（６４ビット）の比較結果では、８ビットのErr-byte[7:0]により
、エラーバイトの位置が特定できる。
【００６８】
さらに、セレクタ３３に比較回路３１での比較結果データを入力し、Err-byte[7:0]に
よって、バイトデータを選択することによって、エラービットを値１で示すバイトデータErr-bit[7:0]を選択できる。バイトデータErr-bit[7:0]は、エラーバイト中のエラービットを１で示すデータである。同様に、交替データレジスタ２２のデータをセレクタ３４に入力し、Err-byte[7:0]によって、バイトデータを選択することによって、エラーバイト
に対応する正しいバイトデータbit[7:0]を得ることができる。そして、エラーバイトに対応する正しいバイトデータbit[7:0]をセレクタ３５に入力し、エラービットを含むバイトデータErr-bit[7:0]によって、エラービットに対応する正しいビットデータを選択することで、エラーの発生したビットの正しい値を特定できる。
【００６９】
以上のように、エラーが発生したキャッシュライン中のエラーの発生したブロック、エラーの発生したブロック中のエラーバイトの位置Err-byte[7:0]、エラーバイト中のエラ
ービットを１で示す値Err-bit[7:0]、エラーバイトに対応する正しいバイトデータbit[7:0]およびエラービットに対応する正しいビットデータを特定できる。したがって、実施例のＣＰＵ１は、比較回路３１による比較結果のデータを全ビット保持する場合に比べて、少ないデータ量でエラーの解析結果を保持できる。例えば、図６の例では、比較結果データ６４ビットに対して、エラーバイトの位置の位置をビット１で示すErr-byte[7:0]、エ
ラーバイト中のエラービットの位置をビット１で示す値Err-bit[7:0]の１６ビットで、エラービット位置を特定できる。また、解析の結果、データの故障方向が特定でき、キャッシュＲＡＭ２０の検証の効率を上げることができる。
【００７０】
また、比較データを選択して保持することにより、少ない回路規模で、固定故障ビット判定を行うことが可能である。また少ない回路規模で済むために、数世代前のエラー情報を記録することも可能になる。例えば、図８に示したように、エラーの情報(交替アドレ
ス、エラーバイト位置、エラービット位置)が異なる場合に、エラー情報を記録するよう
にすればよい。そして、数世代のエラー情報により、故障検出機能の実装効率と解析効率を上げることができる。
【符号の説明】
【００７１】
１    ＣＰＵ
２    命令キャッシュ
３    オペランドキャッシュ
４    ２次キャッシュブロック
１９    ＲＡＭ部
２０    キャッシュＲＡＭ
２１    交替アドレスレジスタ
２２    交替データレジスタ
２３    比較器
２５    交替ＷＡＹレジスタ
２６    アドレスマッチ回路
２７    ＷＡＹマッチ回路
３０    故障位置判定回路
３１    比較回路
３２    バイト単位ＯＲ回路
３３、３４、３５  セレクタ
３８、３９、４０  リテインレジスタ
【図１】
2013061887.tif 000003
【図２】
2013061887.tif 000004
【図３】
2013061887.tif 000005
【図４】
2013061887.tif 000006
【図５】
2013061887.tif 000007
【図６】
2013061887.tif 000008
【図７】
2013061887.tif 000009
【図８】
2013061887.tif 000010