(57)【要約】  処理装置は、第１のレジスタファイルと、第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルと、第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する演算手段と、出力データとその誤り検出符号を第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示と、第１および第２のレジスタファイルそれぞれの擬似故障の生成を指示する第１および第２の発生指示を発行する指示手段を備える。処理装置はさらに、書き込み指示と第１の発生指示とを受け取ったとき、第１の生成指示を発行する第１の制御手段と、第１の生成指示を受け取ったとき、出力データと誤り検出符号に基づいて第１の擬似故障データを生成して第１のレジスタファイルに出力する第１の生成手段を備え、同様の第２の制御手段と第２の生成手段も備える。
2008155795.tif 000002
【特許請求の範囲】
【請求項１】
第１のレジスタファイルと、
該第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルと、
該第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する演算手段と、
前記出力データおよび該出力データの誤りを検出するための誤り検出符号を前記第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示と、前記第１および第２のレジスタファイルそれぞれの擬似故障の生成を指示する第１および第２の発生指示を発行する指示手段と、
前記書き込み指示と前記第１の発生指示とを受け取ったとき、第１の生成指示を発行する第１の制御手段と、
前記第１の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第１の擬似故障データを生成して前記第１のレジスタファイルに出力し、前記第１の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第１のレジスタファイルに出力する第１の生成手段と、
前記書き込み指示と前記第２の発生指示とを受け取ったとき、第２の生成指示を発行する第２の制御手段と、
前記第２の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第２の擬似故障データを生成して前記第２のレジスタファイルに出力し、前記第２の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第２のレジスタファイルに出力する第２の生成手段と、
を備えることを特徴とする処理装置。
【請求項２】
前記第１の制御手段は、前記第１の生成指示を発行する頻度を指示する第１の頻度選択指示をさらに受け取り、該第１の頻度選択指示に応じて、前記第１の生成指示を発行する頻度を調整することを特徴とする請求項１に記載の処理装置。
【請求項３】
前記第１の頻度選択指示は、前記書き込み指示の発行回数を示す複数の選択肢のうちの１つを選択する指示であり、
前記第１の制御手段は、選択された前記選択肢に対応する前記発行回数に前記書き込み指示の発行回数が達するとともに前記第１の発生指示を受け取っているときに、前記第１の生成指示を発行することによって、前記第１の生成指示を発行する前記頻度を調整する、
ことを特徴とする請求項２に記載の処理装置。
【請求項４】
前記第２の制御手段は、前記第２の生成指示を発行する頻度を指示する第２の頻度選択指示をさらに受け取り、該第２の頻度選択指示に応じて、前記第２の生成指示を発行する頻度を調整することを特徴とする請求項１に記載の処理装置。
【請求項５】
前記第２の頻度選択指示は、前記書き込み指示の発行回数を示す複数の選択肢のうちの１つを選択する指示であり、
前記第２の制御手段は、選択された前記選択肢に対応する前記発行回数に前記書き込み指示の発行回数が達するとともに前記第２の発生指示を受け取っているときに、前記第２の生成指示を発行することによって、前記第２の生成指示を発行する前記頻度を調整する、
ことを特徴とする請求項５に記載の処理装置。
【請求項６】
前記第１のレジスタファイルに対して誤り検出が可能なビット数の上限を、１以上であるｄとして、
前記第１の生成手段は、少なくとも前記出力データおよび前記誤り検出符号を入力として受け取り、入力のうちｄビット以下のビットを反転させることにより、前記第１の擬似故障データを生成する、
ことを特徴とする請求項１に記載の処理装置。
【請求項７】
前記第１の生成手段が反転させるべきビットの数である、１以上ｄ以下の数ｘを指定するビット選択指示を、前記第１の生成手段がさらに受け取ることを特徴とする請求項６に記載の処理装置。
【請求項８】
前記ビット選択指示は、予め位置が決められた特定のｄビットの中からｘビットを選択する指示であることを特徴とする請求項７に記載の処理装置。
【請求項９】
前記誤り検出符号は、誤り訂正が不可能な種類の符号であり、
前記第１の生成手段は、前記出力データから生成された誤り訂正符号も入力として受け取り、前記出力データと前記誤り検出符号と前記誤り訂正符号のうちのｄビット以下のビットを反転させることによって、前記第１の擬似故障データを生成することを特徴とする請求項６に記載の処理装置。
【請求項１０】
前記第１の生成手段から出力されて前記第１のレジスタファイルに格納された前記第１の擬似故障データを、前記誤り訂正符号に基づいて訂正する誤り訂正手段をさらに備えることを特徴とする請求項９に記載の処理装置。
【請求項１１】
前記演算手段から前記第１の生成手段を介して前記第１のレジスタファイルへ至る経路の一部と、前記演算手段から前記第２の生成手段を介して前記第２のレジスタファイルへ至る経路の一部が共通であることを特徴とする請求項１に記載の処理装置。
【請求項１２】
前記第２の生成手段が、前記演算手段と前記第１の生成手段を結ぶ経路上にあることを特徴とする請求項１１に記載の処理装置。
【請求項１３】
第１のレジスタファイルと、該第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルと、該第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する演算手段と、前記出力データおよび該出力データの誤りを検出するための誤り検出符号を前記第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示を発行する指示手段を備える処理装置が、擬似故障の生成を制御する制御方法であって、
前記第１のレジスタファイルの擬似故障の生成を指示する第１の発生指示を発行し、
前記書き込み指示と前記第１の発生指示の双方が発行されたとき、前記出力データおよび前記誤り検出符号に基づいて第１の擬似故障データを生成して、前記第１のレジスタファイルに出力し、
前記第１の発生指示なしに前記書き込み指示が発行されたとき、前記出力データおよび前記誤り検出符号を前記第１のレジスタファイルに出力し、
前記第２のレジスタファイルの擬似故障の生成を指示する第２の発生指示を発行し、
前記書き込み指示と前記第２の発生指示の双方が発行されたとき、前記出力データおよび前記誤り検出符号に基づいて第２の擬似故障データを生成して、前記第２のレジスタファイルに出力し、
前記第２の発生指示なしに前記書き込み指示が発行されたとき、前記出力データおよび前記誤り検出符号を前記第２のレジスタファイルに出力する、
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、故障の発生をシミュレートする技術に関する。
【背景技術】
【０００２】
一般的な情報処理装置において、レジスタファイルなどに故障が発生してデータに誤りが生じた場合に、誤りを検出する機構や、検出した誤りを自動的に訂正し、故障から回復するための各種の機構が知られている。情報処理装置の試作時および実際の製造時の検査過程においては、パリティを使って誤りを検出する機構、誤り訂正符号（ＥＣＣ）を使って誤りの検出と訂正を行う機構、誤りの検出に応じてハードウェアによって自動的に命令の再実行を行う機構、誤りの検出に応じてソフトウェア割り込みによってプログラムの再実行を行う機構などがそれぞれ正しく動作することを確認する必要がある。つまり、これらの機構に対してデバッグを行う必要がある。以下では、デバッグの対象であるこれらの機構を総称して「デバッグ対象機構」と呼ぶ。デバッグ対象機構のデバッグを行うためには、故障の発生をシミュレートするために擬似的な故障（以下、擬似故障という）を発生する回路を、予め情報処理装置内の中央処理装置（ＣＰＵ）に埋め込んでおくことが必要となる。【０００３】
図１は、擬似故障を発生する回路を埋め込んだ従来の中央処理装置の構成を示す機能ブロック図である。図１は、ＣＰＵ１００を構成する各部のうち、擬似故障の発生に関連する部分を抜粋した図である。【０００４】
通常動作時には、演算部１０２が、レジスタファイル１０１から読み出したデータを用いて演算を行い、演算結果をレジスタファイル１０１に書き戻す。制御部１０３は演算の実行全体を制御し、その制御は、例えばレジスタファイル１０１に対するデータの書き込み指示を含む。【０００５】
さらに、ＣＰＵ１００は、ハードウェア、ファームウェア、および／またはソフトウェアにより実現されるデバッグ対象機構（不図示）と、擬似故障データ生成回路１０４を備えている。また、制御部１０３は、上記のように通常の演算を行う通常モードと、デバッグ対象機構をデバッグするためのデバッグモードを切り替える制御も行う。【０００６】
擬似故障データ生成回路１０４は、演算部１０２からレジスタファイル１０１への経路の途中に設けられている。通常モードの場合は、演算部１０２から出力された演算結果が擬似故障データ生成回路１０４に入力され、擬似故障データ生成回路１０４は入力をそのままレジスタファイル１０１へ出力する。【０００７】
一方、デバッグモードの場合は、制御部１０３が擬似故障データ生成回路１０４に擬似故障の発生を指示する。そして、擬似故障データ生成回路１０４が、擬似故障発生指示にしたがって、演算部１０２から入力された演算結果から擬似故障データを生成してレジスタファイル１０１に出力する。典型的な擬似故障データは、入力された演算結果のうち１ビット以上のビット値を反転させて得られるデータである。【０００８】
以上の動作により、演算結果が擬似故障データに変換されてからレジスタファイル１０１に書き込まれるので、故障の発生がシミュレートされる。このようにシミュレートされた故障すなわち擬似故障は、デバッグ対象機構のデバッグ用に用いられる。【０００９】
擬似故障の発生に関する公知の文献には、例えば特許文献１〜４がある。
特許文献１の装置は、任意のシンドロームビットを設定することができるシンドロームビット設定器と、通常使用されるシンドロームビット作成回路からの出力とシンドロームビット設定器からの出力の一方を選択するセレクタを備える。セレクタの出力はシンドロームビットデコード回路でデコードされ、デコード結果とレジスタに格納されたデータの排他的論理和（ＸＯＲ）がデータ修正回路で求められる。よって、セレクタでシンドロームビット設定器を選択することにより、任意のビットにエラーを生じたデータが、データ修正回路から出力される。【００１０】
特許文献２の回路は、誤り訂正回路が誤り訂正可能な誤りのすべてのパターンを指定することができるように、カウンタとデコーダを組み合わせた制御回路を備える。制御回路は、データとＥＣＣの各ビットに対応するエラー発生用制御ビットを出力する。それらのエラー発生用制御ビットのそれぞれは、擬似障害発生回路において、対応するデータのビットまたは対応するＥＣＣのビットとのＸＯＲが演算される。したがって、誤り訂正回路が誤り訂正可能な誤りのすべてのパターンの擬似障害を発生させることが可能となる。【００１１】
特許文献３の回路では、マイクロプログラム制御方式の中央処理装置において、擬似障害を発生させるタイミングを示す時刻信号が論理レベル“１”となったときに、障害指示フリップフロップがセットされており、障害発生が1回のみであることを示すモードフリップフロップと既に障害を発生させたことを示す履歴フリップフロップの少なくとも一方がセットされていなければ、1クロックの間だけ、障害発生フリップフロップがセットされて障害が通知される。【００１２】
特許文献４の回路は、対応するレジスタの値のパリティチェックを行う複数のパリティチェック回路の各々に対して、障害を検出する対象であるレジスタに擬似障害を発生させるか否かを設定することができる。擬似障害を発生させるよう設定されると、ＸＯＲ回路によって、障害を検出する対象のレジスタのパリティビットが反転される。【００１３】
以上のように、擬似故障の発生に関する様々な技術が知られている。一方で、多数のエントリを有する大規模なレジスタファイルから高速にデータを読み出すために、複数のレジスタファイルを備えたＣＰＵも知られている。【００１４】
例えば、特許文献５の装置は、複数のレジスタウィンドウを有するマスタレジスタファイル（ＭＲＦ）と、カレントウィンドウポインタ（ＣＷＰ）により示される現在のレジスタウィンドウのデータのコピーを保持するカレントウィンドウレジスタ（ＣＷＲ）と、次にＣＷＲに保持されるべきレジスタウィンドウのデータを先読みして保持するカレントウィンドウリプレースバッファ（ＣＲＢ）と、ＣＷＲまたはＣＲＢからデータを読み出して演算を実行する演算部を備えている。【００１５】
しかし、複数のレジスタファイルを有するＣＰＵにおいて従来の方法で擬似故障を発生させると、デバッグ対象機構を十分にデバッグすることができないという問題がある。例えば、図１のレジスタファイル１０１が、多数のエントリを有する大規模なレジスタファイル（以下ＭＲＦという。ＭＲＦはMaster Register Fileの略）と、ＭＲＦの一部のエントリのデータのみをコピーして保持する小規模なレジスタファイル（以下ＷＲＦという。ＷＲＦはWorking Register Fileの略）から構成されているとする。また、演算部１０２はＷＲＦからデータを読み出し、演算結果がＭＲＦとＷＲＦの双方に書き戻されるとする。【００１６】
この場合、図１の構成によれば、擬似故障データ生成回路１０４から出力された同じ擬似故障データがＭＲＦとＷＲＦの双方に書き込まれる。よって、擬似故障データ生成回路１０４がシミュレートすることができるパターンは、レジスタファイル１０１を構成するＭＲＦとＷＲＦの双方に同じ故障が同時に生じるというパターンのみである。【００１７】
つまり、図1のような従来の構成では、ＷＲＦとは独立にＭＲＦにのみ生じる故障をシミュレートし、ＭＲＦ用に設けられたデバッグ対象機構を個別にデバッグすることができない。しかし、ＭＲＦにのみ生じる故障をシミュレートし、その故障が正しく検出されるか否か、およびデータが正しく訂正されるか否かをデバッグすることは重要である。よって、ＭＲＦにのみ生じる故障をシミュレートする機能が望まれている。【００１８】
その理由の１つは、ＭＲＦからＷＲＦを復旧することは可能だが逆は不可能なためである。たとえＷＲＦに故障が発生しても、ＭＲＦが正常ならばＭＲＦからデータをコピーしなおすことによってＷＲＦのデータを簡単に復旧することができる。しかし、ＭＲＦに故障が発生すると、ＷＲＦにはＭＲＦが保持するデータのうちの一部しか保持されていないので、ＷＲＦからＭＲＦのデータを復旧することはできない。よって、例えばキャッシュメモリあるいはメインメモリからデータを読み出してＭＲＦのデータを復旧するなどの措置が必要となる。つまり、ＭＲＦに発生する故障はＷＲＦに発生する故障よりも影響の範囲が広いため、ＭＲＦにのみ生じる故障をシミュレートする機能は重要である。【００１９】
また、もう１つの理由は、ＭＲＦの方がＷＲＦよりも規模が大きいことから、中性子等によるソフトエラーがＭＲＦに発生する頻度が、ＷＲＦにおけるソフトエラーの発生頻度よりも高いためである。このように実際の故障の発生頻度が異なるため、ＷＲＦには故障が生じないがＭＲＦには故障が生じるという現実的なパターンをシミュレートする機能が求められている。
【特許文献１】特開昭５８−０４３０４４号公報
【特許文献２】特開昭５９−２００３４９号公報
【特許文献３】特開昭６１−２６７８４０号公報
【特許文献４】特開平４−１０９３４０号公報
【特許文献５】特開２００７−０８７１０８号公報
【発明の開示】
【００２０】
上記の議論は、情報処理装置に含まれるＣＰＵに限らず、複数のレジスタファイルを備えた処理装置すなわちプロセッサ一般について成立する。そこで本発明は、第１のレジスタファイルと、該第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルとを備える処理装置において、第１のレジスタファイルに単独に発生する故障のシミュレーションを少なくとも可能とすることを目的とする。
【００２１】
本発明の処理装置は、第１と第２のレジスタファイル、演算手段、指示手段、第１と第２の制御手段、および第１と第２の生成手段を備える。
前記第２のレジスタファイルは、前記第１のレジスタファイルが保持するデータの一部を保持する。前記演算手段は、前記第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する。
【００２２】
前記指示手段は、前記出力データおよび該出力データの誤りを検出するための誤り検出符号を前記第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示と、前記第１および第２のレジスタファイルそれぞれの擬似故障の生成を指示する第１および第２の発生指示を発行する。
【００２３】
前記第１の制御手段は、前記書き込み指示と前記第１の発生指示とを受け取ったとき、第１の生成指示を発行する。前記第１の生成手段は、前記第１の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第１の擬似故障データを生成して前記第１のレジスタファイルに出力し、前記第１の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第１のレジスタファイルに出力する。
【００２４】
前記第２の制御手段は、前記書き込み指示と前記第２の発生指示とを受け取ったとき、第２の生成指示を発行する。前記第２の生成手段は、前記第２の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第２の擬似故障データを生成して前記第２のレジスタファイルに出力し、前記第２の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第２のレジスタファイルに出力する。
【００２５】
本発明によれば、指示手段が、書き込み指示を発行する際に第１の発生指示を発行する一方で第２の発生指示を発行しないことによって、第１のレジスタファイルには第１の擬似故障データが出力され、第２のレジスタファイルには演算結果である出力データそのものが出力される。よって、本発明の処理装置は、第１のレジスタファイルに単独に発生する故障をシミュレートすることができる。
【図面の簡単な説明】
【００２６】
【図１】擬似故障を発生する回路を埋め込んだ従来のＣＰＵの構成を示す機能ブロック図である。
【図２】第１実施形態によるＣＰＵの構成を示す機能ブロック図である。
【図３】第２実施形態によるＣＰＵの構成を示す機能ブロック図である。
【図４】第２実施形態における擬似故障発生制御部の具体例を示す回路図である。
【図５】第２実施形態における擬似故障データ生成回路の具体例を示す回路図である。
【図６】第２実施形態における擬似故障データ生成回路の具体例を示す回路図である。
【発明を実施するための最良の形態】
【００２７】
以下、実施形態の一例について、図面を参照しながら詳細に説明する。
図２は第１実施形態によるＣＰＵの構成を示す機能ブロック図である。図２において、実線の矢印は制御用の指示を表し、ブロック形状の矢印はデータの流れを表す。【００２８】
図２のＣＰＵ２００は、第１のレジスタファイル２０１と第２のレジスタファイル２０２と演算部２０３を備える。第１のレジスタファイル２０１は多数のエントリを有し、規模が大きい。大規模な第１のレジスタファイル２０１から演算部２０３へ高速にデータを読み出すために、ＣＰＵ２００には第１のレジスタファイル２０１が保持するデータの一部をコピーして保持する第２のレジスタファイル２０２が設けられている。すなわち、第２のレジスタファイル２０２のエントリ数は第１のレジスタファイル２０１のエントリ数よりも少なく、第１のレジスタファイル２０１のエントリのうち一部のエントリのデータのみが第２のレジスタファイル２０２にコピーされる。演算部２０３は第２のレジスタファイル２０２からデータを読み出して演算を実行し、演算結果を出力データとして出力する。【００２９】
なお、第１と第２のレジスタファイル２０１と２０２は、データと、そのデータの誤りを検出するための誤り検出符号を格納する。すなわち、第１と第２のレジスタファイル２０１と２０２の各エントリは、データと誤り検出符号からなる。誤り検出符号には、誤りの検出は可能だが誤りの訂正は不可能なパリティやチェックサムのほかに、誤りの訂正も可能なＥＣＣがある。また、ＥＣＣには多くの種類がある。第１と第２のレジスタファイル２０１と２０２には任意の種類の誤り検出符号を採用することができるが、本実施形態ではパリティを採用する。その理由は、パリティの生成およびチェックを行うための回路は単純で規模も小さいためである。【００３０】
本実施形態では、演算部２０３が演算結果からパリティを算出して、出力データとあわせてパリティを出力する。また、図２では省略されているが、ＣＰＵ２００は、パリティをチェックして誤りを検出する誤り検出回路も備えている。誤り検出回路は複数存在してもよく、例えば、第１のレジスタファイル２０１と第２のレジスタファイル２０２と演算部２０３のそれぞれに対して誤り検出回路が設けられていてもよい。【００３１】
ＣＰＵ２００はさらに、指示部２０４、第１の制御部２０５、第１の生成部２０６、第２の制御部２０７、および第２の生成部２０８を備える。
指示部２０４は、演算部２０３から出力される出力データをパリティとともに第１と第２のレジスタファイル２０１と２０２の双方に書き込むことを指示する書き込み指示と、第１のレジスタファイル２０１に発生する故障のシミュレーションを指示する第１の発生指示と、第２のレジスタファイル２０２に発生する故障のシミュレーションを指示する第２の発生指示を、それぞれ発行する。故障のシミュレーションの指示とは、換言すれば、擬似故障の生成の指示である。指示部２０４は、ＣＰＵ２００の動作を制御するためのその他の指示をさらに発行してもよい。【００３２】
第１の制御部２０５は、書き込み指示と第１の発生指示とを指示部２０４から受け取ったとき、第１の生成指示を発行して第１の生成部２０６に出力する。第１の生成部２０６は、第１の生成指示を受け取ったとき、演算部２０３から出力された出力データとパリティとに基づいて第１の擬似故障データを生成し、第１のレジスタファイル２０１に出力する。第１の擬似故障データは、出力データと、パリティのうち1ビット以上のビットを反転させて得られるデータである。一方、第１の生成指示がないときは、第１の生成部２０６は、演算部２０３から出力された出力データとパリティとをそのまま第１のレジスタファイル２０１に出力する。【００３３】
第２の制御部２０７は、書き込み指示と第２の発生指示とを指示部２０４から受け取ったとき、第２の生成指示を発行して第２の生成部２０８に出力する。第２の生成部２０８は、第２の生成指示を受け取ったとき、演算部２０３から出力された出力データとパリティとに基づいて第２の擬似故障データを生成し、第２のレジスタファイル２０２に出力する。第２の擬似故障データは、出力データと、パリティのうち1ビット以上のビットを反転させて得られるデータである。一方、第２の生成指示がないときは、第２の生成部２０８は、演算部２０３から出力された出力データとパリティとをそのまま第２のレジスタファイル２０２に出力する。【００３４】
なお、本実施形態では、指示部２０４が、第１と第２のレジスタファイル２０１と２０２に対しても、データとパリティとを書き込むタイミングを指示するために書き込み指示を与えている。【００３５】
以上のように構成されたＣＰＵ２００は、２つのモードに応じて、次のように動作する。
ＣＰＵ２００を組み込んだ情報処理装置を一般のユーザが使用する際、ＣＰＵ２００は、通常の演算を行う通常モードに設定されている。通常モードのとき、指示部２０４は第１の生成指示も第２の生成指示も発行しない。したがって、演算部２０３から出力された出力データとパリティは、そのまま第１のレジスタファイル２０１と第２のレジスタファイル２０２に書き込まれる。【００３６】
一方、例えば、工場におけるＣＰＵ２００の出荷前の検査などでは、不図示の誤り検出回路が正しく動作するか否かが検査され、すなわち、誤り検出回路がデバッグされる。そのデバッグのためには、擬似故障を発生させる必要がある。よって、ＣＰＵ２００の検査の際、ＣＰＵ２００は、第１または第２の生成指示にしたがって、擬似故障を発生させるモードであるデバッグモードに設定される。【００３７】
デバッグモードのとき、指示部２０４が第１の生成指示を発行すれば、書き込み指示にしたがって、第１のレジスタファイル２０１には第１の擬似故障データが出力される。また、デバッグモードのとき、指示部２０４が第２の生成指示を発行すれば、書き込み指示にしたがって、第２のレジスタファイル２０２には第２の擬似故障データが出力される。デバッグモードのときに、指示部２０４が第１と第２の生成指示の一方あるいは双方を必要に応じて発行することにより、デバッグの対象に合わせた所望のパターンの故障のシミュレーションが可能となる。したがって、シミュレートされたパターンの故障に対して、誤り検出回路等が正しく動作するか否かを検査することが可能である。【００３８】
図２のＣＰＵ２００では、レジスタファイルと制御部と生成部の組が２組設けられていることから、例えば第１のレジスタファイル２０１には故障が発生するが第２のレジスタファイル２０２は正常であるといったパターンもシミュレート可能である。【００３９】
次に、図３から図６を参照して、第２実施形態について説明する。第２実施形態は、第１実施形態にいくつかの付加的な機能を追加した実施形態である。
図３は第２実施形態によるＣＰＵの構成を示す機能ブロック図である。まず、図２と類似の構成要素について図２との対応関係を説明すると、図３のＭＲＦ３０１、ＷＲＦ３０２、演算部３０３、制御部３０４、擬似故障発生制御部３０５、擬似故障データ生成回路３０６、擬似故障発生制御部３０７、および擬似故障データ生成回路３０８はそれぞれ、図２の第１のレジスタファイル２０１、第２のレジスタファイル２０２、演算部２０３、指示部２０４、第１の制御部２０５、第１の生成部２０６、第２の制御部２０７、および第２の生成部２０８に対応する。【００４０】
図３では、これら図２と類似の構成要素にも、第２実施形態に独自の機能が付加されている。また、ＣＰＵ３００はさらに、第２実施形態に独自の構成要素であるパリティチェック部３０９、ＥＣＣチェック・訂正回路３１０、パリティ生成回路３１１、ＥＣＣ生成回路３１２、セレクタ３１３を備えている。なお、ＣＰＵ３００の構成要素のうち、本実施形態と直接的に関係しないキャッシュメモリ等の構成要素は、図３では省略している。【００４１】
次に、図３のＣＰＵ３００の構成と動作についてより詳細に説明する。
ＭＲＦ３０１は、多数のエントリを有するレジスタファイルである。ＭＲＦ３０１では、６４ビットのデータと、８ビットのパリティと、８ビットのＥＣＣからなる８０ビットのフォーマットを採用している。すなわち、ＭＲＦ３０１の各エントリは、データとパリティとＥＣＣの８０ビットからなる。なお、本実施形態では、６４ビットのデータを８ビットごとに区切って、８ビットのデータそれぞれに対して１ビットのパリティを算出しており、そのためパリティは全部で８ビットである。また、本実施形態では、ＳＥＣＤＥＤ（single-error-correct, double-error-detect）ＥＣＣを採用している。６４ビットのデータに対するＳＥＣＤＥＤ−ＥＣＣは８ビットである。以下では、説明の便宜上、０〜６３ビット目がデータ、６４〜７１ビット目がパリティ、７２〜７９ビット目がＥＣＣであると仮定する。【００４２】
一方ＷＲＦ３０２では、６４ビットのデータと、８ビットのパリティからなる７２ビットのフォーマットを採用している。なお、ＷＲＦ３０２では、０〜６３ビット目がデータ、６４〜７１ビット目がパリティであると仮定する。このようにＭＲＦ３０１とＷＲＦ３０２でフォーマットが異なる理由は次のとおりである。【００４３】
ＭＲＦ３０１は、ＷＲＦ３０２や演算部３０３よりも規模が大きいので、中性子等によりソフトエラーが発生する頻度がより高く、誤りを訂正するためのＥＣＣを付加することによりデータの信頼性を高めることが好ましい。ＥＣＣを付加することで、ＭＲＦ３０１に生じた1ビットの間欠故障を、ＥＣＣチェック・訂正回路３１０により訂正することが可能となる。一方で、ＥＣＣの付加は回路規模の増大を招くので、データの信頼性と回路規模のバランスを考慮して、本実施形態ではソフトエラーの発生頻度がＭＲＦ３０１よりも低いＷＲＦ３０２においては、ＥＣＣを付加せず、パリティのみを利用する手法を採用した。【００４４】
ＷＲＦ３０２も複数のエントリを有するレジスタファイルだが、ＷＲＦ３０２のエントリ数はＭＲＦ３０１のエントリ数よりも少ない。ＷＲＦ３０２は、ＭＲＦ３０１のエントリのうちの一部のエントリのデータとパリティをコピーして保持する。ＭＲＦ３０１からＷＲＦ３０２へのコピーのタイミングと、コピーの対象となるＭＲＦ３０１のエントリと、ＭＲＦ３０１とＷＲＦ３０２のエントリ同士の対応関係は、制御部３０４により指示される。【００４５】
また、後述するように誤りが検出された際には、ＭＲＦ３０１中の指示されたエントリから、データとＥＣＣがＷＲＦ３０２へコピーされる。上記のようにパリティとＥＣＣはともに８ビットなので、場合に応じて同じ７２ビットのエントリを「データとパリティを保持する」という用途と、「データとＥＣＣを保持する」という用途の２通りに使い分けることができる。それにより、回路を有効に利用することができ、不必要に回路規模が増大することを防いでいる。【００４６】
ＭＲＦ３０１からＷＲＦ３０２へ至る経路の途中には、パリティチェック部３０９が設けられている。ＭＲＦ３０１からＷＲＦ３０２へデータとパリティをコピーするときには、制御部３０４が制御する不図示のセレクタが０〜７１ビット目を選択して、ＭＲＦ３０１からデータとパリティをパリティチェック部３０９に入力する。パリティチェック部３０９は、入力されたデータとパリティをチェックする。【００４７】
パリティチェックによって誤りが検出されなければ、パリティチェック部３０９は、入力されたデータとパリティをそのままＷＲＦ３０２に出力する。そして、以上のようにしてＷＲＦ３０２にコピーされたデータを使って、演算部３０３が演算を実行する。【００４８】
より詳細には、ＷＲＦ３０２が演算部３０３にデータとパリティを出力し、演算部３０３がパリティをチェックし、誤りが検出されなければ演算を実行する。その演算の結果は６４ビットの出力データである。演算部３０３は出力データに対応する８ビットのパリティも算出し、出力データとパリティからなる７２ビットを出力する。【００４９】
図３において、演算部３０３からＭＲＦ３０１へ至る経路は２つあるが、ＣＰＵ３００内で誤りが検出されていない状態（以下、正常状態という）で使われるのは図示左側の経路、すなわち、演算部３０３から、ＥＣＣ生成回路３１２、擬似故障データ生成回路３０８、擬似故障データ生成回路３０６、およびセレクタ３１３をこの記載順に経由して、ＭＲＦ３０１へ至る経路である。この経路の一部は、演算部３０３からＷＲＦ３０２へ至る経路を兼ねている。すなわち、図３において擬似故障データ生成回路３０８と３０６の間にある分岐点を符号「Ｐ」により参照すると、演算部３０３から分起点Ｐまでの経路が重複部分である。【００５０】
よって、出力データとそれに対応するパリティをＭＲＦ３０１とＷＲＦ３０２の双方に書き戻すために、演算部３０３は、出力データとパリティをＥＣＣ生成回路３１２に出力する。ＥＣＣ生成回路３１２は、出力データとパリティからなる７２ビットを入力として受け取り、６４ビットの出力データからその出力データに対応する８ビットのＥＣＣを生成し、出力データとパリティとＥＣＣとからなる８０ビットを擬似故障データ生成回路３０８に出力する。【００５１】
擬似故障データ生成回路３０８は、擬似故障発生制御部３０７から擬似故障データ生成指示を受けた場合、出力データとパリティとからなる７２ビットのうち１ビットの値を反転させ、ＥＣＣ生成回路３１２から入力された８ビットのＥＣＣと合わせることにより８０ビットの擬似故障データを生成する。擬似故障データ生成回路３０８は、生成した８０ビットの擬似故障データのうち、出力データとパリティに相当する７２ビットをＷＲＦ３０２に出力するとともに、擬似故障データ生成回路３０６に８０ビットの擬似故障データを出力する。【００５２】
一方、擬似故障発生制御部３０７から擬似故障データ生成指示を受けていない場合、擬似故障データ生成回路３０８は、入力された８０ビットのうち出力データとパリティに相当する７２ビットをそのままＷＲＦ３０２に出力するとともに、入力された８０ビットをそのまま擬似故障データ生成回路３０６へ出力する。【００５３】
なお、擬似故障データ生成指示は、具体的には１ビットの信号により表される。その１ビットの値が０のときは擬似故障データ生成指示がないことを表し、１のときは擬似故障データ生成指示があることを表す。以下、他の各種の指示においても同様に、０は指示がないこと、１は指示があることを表すものとして説明する。また、擬似故障発生制御部３０７が発行する擬似故障データ生成指示は、第１実施形態における第２の生成指示に相当する。【００５４】
以上のようにして、擬似故障発生制御部３０７から擬似故障データ生成指示を受けた場合には、擬似故障データがＷＲＦ３０２に書き込まれるので、ＷＲＦ３０２に発生する故障がシミュレートされる。したがって、その擬似故障データが次回以降の演算のために演算部３０３に読み出されるときに、演算部３０３が正しく誤りを検出するか否かというデバッグを行うことが可能となる。【００５５】
一方で、以下に説明するとおり、本実施形態では、ＭＲＦ３０１に単独に発生する故障もシミュレート可能であり、そのシミュレーションではＭＲＦ３０１に擬似故障データが書き込まれる。そして、本実施形態によれば、ＭＲＦ３０１の擬似故障データが後にＷＲＦ３０２にコピーされるときに、パリティチェック部３０９が正しく誤りを検出するか否か、その検出に応じてＥＣＣチェック・訂正回路３１０が正しく動作するか否か、などのデバッグを行うことが可能となる。【００５６】
上記の擬似故障データ生成回路３０８の動作の続きから説明すると、擬似故障データ生成回路３０８から出力された８０ビットは、擬似故障データ生成回路３０６に入力される。なお、この８０ビットは、擬似故障データ生成回路３０８で生成された擬似故障データである場合と、出力データとパリティとＥＣＣからなる場合とがある。【００５７】
擬似故障データ生成回路３０６は、擬似故障発生制御部３０５から擬似故障データ生成指示を受けた場合には、入力された８０ビットのうち１ビットまたは２ビットの値を反転させることにより、８０ビットの擬似故障データを生成し、セレクタ３１３に出力する。また、擬似故障発生制御部３０５から擬似故障データ生成指示を受けていない場合は、擬似故障データ生成回路３０６は、入力された８０ビットをそのままセレクタ３１３に出力する。なお、擬似故障発生制御部３０５が発行する擬似故障データ生成指示は、第１実施形態における第１の生成指示に相当する。【００５８】
セレクタ３１３は、擬似故障データ生成回路３０６からの出力とパリティ生成回路３１１からの出力の一方を選択して、ＭＲＦ３０１に与える。セレクタ３１３は制御部３０４により制御されている。制御部３０４は、ＣＰＵ３００内で誤りが検出された状態（以下、故障検出状態という）のときはパリティ生成回路３１１を選択し、正常状態のときは擬似故障データ生成回路３０６を選択するよう、セレクタ３１３に指示を与える。【００５９】
したがって、正常状態のときは、擬似故障データ生成回路３０６から出力された８０ビットがＭＲＦ３０１に書き込まれる。説明の簡素化のため、実際の故障が生じる場合を無視すれば、この８０ビットは次の４通りがありうる。
（１）擬似故障発生制御部３０７と３０５のいずれも擬似故障データ生成指示を発行しなかった場合は、演算部３０３から出力された出力データと、それに対応するパリティおよびＥＣＣがＭＲＦ３０１に書き込まれる。
（２）擬似故障発生制御部３０７が擬似故障データ生成指示を発行し、擬似故障発生制御部３０５が擬似故障データ生成指示を発行しなかった場合は、擬似故障データ生成回路３０８が発生させた１ビットの擬似故障を含む擬似故障データがＭＲＦ３０１に書き込まれる。
（３）擬似故障発生制御部３０７が擬似故障データ生成指示を発行せず、擬似故障発生制御部３０５が擬似故障データ生成指示を発行した場合は、擬似故障データ生成回路３０６が発生させた１ビットまたは２ビットの擬似故障を含む擬似故障データがＭＲＦ３０１に書き込まれる。
（４）擬似故障発生制御部３０７と３０５の双方が擬似故障データ生成指示を発行した場合は、擬似故障データ生成回路３０８が発生させた１ビットの擬似故障と擬似故障データ生成回路３０６が発生させた１ビットまたは２ビットの擬似故障を含む擬似故障データがＭＲＦ３０１に書き込まれる。【００６０】
ただし、本実施形態では（４）の場合が生じないように制御部３０４が制御している。その理由は、（４）の場合、検出の対象としては想定外の３ビットの擬似故障を含む擬似故障データがＭＲＦ３０１に書き込まれることがありうるからである。以下に、制御部３０４による制御と、擬似故障発生制御部３０５と３０７の動作をあわせて説明する。【００６１】
制御部３０４は、演算部３０３から出力された出力データをＭＲＦ３０１とＷＲＦ３０２の双方に書き込むことを指示する書き込み指示を、ＭＲＦ３０１、ＷＲＦ３０２、擬似故障発生制御部３０５、および擬似故障発生制御部３０７に対して発行する。書き込み指示を擬似故障発生制御部３０５と３０７にも発行する理由は、擬似故障を発生させるタイミングの通知のためと、擬似故障の発生頻度を調整するためである。詳しくは後述するが、第２実施形態では、書き込み指示の発行回数に対する割合を指定することにより擬似故障の発生頻度が調整される。【００６２】
また、制御部３０４は、擬似故障発生制御部３０５と３０７に対してそれぞれ、擬似故障の発生を指示する１ビットの擬似故障発生指示を発行する。擬似故障発生制御部３０５と３０７に対する擬似故障発生指示は、それぞれ、第１実施形態における第１と第２の発生指示に相当する。第２実施形態では上記の（４）の場合を防ぐために、制御部３０４が、擬似故障発生制御部３０５と３０７のうち高々一方にのみ擬似故障発生指示を発行するように動作する。【００６３】
さらに、制御部３０４は、擬似故障発生制御部３０５と３０７に対してそれぞれ独立に、擬似故障の発生頻度を選択する擬似故障頻度選択信号を出力する。擬似故障頻度選択信号は、擬似故障発生制御部３０５と３０７が擬似故障データ生成指示を発行する頻度を調整するための信号である。【００６４】
制御部３０４はまた、１ビットに擬似故障を発生させるべきか２ビットに擬似故障を発生させるべきかを指定する擬似故障ビット選択信号を、擬似故障データ生成回路３０６に出力する。【００６５】
擬似故障発生制御部３０５は、制御部３０４から擬似故障発生指示が発行されると、制御部３０４から与えられる擬似故障頻度選択信号によって指定された頻度で、擬似故障データ生成回路３０６に対して擬似故障データ生成指示を発行する。擬似故障データ生成回路３０６の動作は前述のとおりである。【００６６】
擬似故障発生制御部３０７も同様に、制御部３０４から擬似故障発生指示が発行されると、制御部３０４から与えられる擬似故障頻度選択信号によって指定された頻度で、擬似故障データ生成回路３０８に対して擬似故障データ生成指示を発行する。擬似故障データ生成回路３０８の動作は前述のとおりである。【００６７】
つまり、擬似故障データ生成回路３０６と３０８の動作は、直接的にはそれぞれ擬似故障発生制御部３０５と３０７によって制御されるが、間接的には制御部３０４によって制御されている。【００６８】
次に、上記のように擬似故障の発生頻度を調整することが好ましい理由を説明する。ＣＰＵ３００は、図３では省略されているものも含めて各種のデバッグ対象機構を備えている。デバッグ対象機構のうちいずれかがデータの誤りから故障の発生を検出した場合、ハードウェアによる自動的な命令の再実行や、ソフトウェア割り込みによる例外処理などが行われる。【００６９】
一般に、故障（エラー）の発生頻度が低いうちは、ハードウェアによる命令の再実行によりプログラムの実行が継続されるが、故障の発生頻度が高くなるとハードウェアでは処理しきれなくなり、ソフトウェアによる割り込み処理が発生しやすくなる。このように、故障の発生頻度に応じて、実行されるべき動作の種類も異なり、その動作を実行すべきユニットも異なる。したがって、故障の発生頻度に応じて各種のデバッグ対象機構が適切に動作するか否かをデバッグすることが必要である。【００７０】
しかしながら、図１の回路では、擬似故障の発生頻度を制御することができなかった。そこで、第２実施形態では、図１の問題を解決するために擬似故障の発生頻度を制御している。制御の具体例は、図４とあわせて後述する。【００７１】
次に、生成された擬似故障データがどのように使われるかを説明する。第１実施形態で説明したのと同様に、第２実施形態のＣＰＵ３００に対しても、通常モードとデバッグモードのいずれかが設定される。一方、モードの切り替えとは独立に、ＣＰＵ３００の状態には、正常状態と故障検出状態の２つの状態がある。【００７２】
上記のように擬似故障データ生成回路３０８または３０６によって生成された擬似故障データは、各種のデバッグ対象機構が適切に動作するか否かを検証するデバッグのために使われる。具体的には、正常状態から故障検出状態へ適切に移行するか否か、故障検出状態で適切な訂正が行われて正常状態へ回復するか否か、ということが検証される。すなわち、第２実施形態では、擬似故障データに対して以下に述べる動作が行われるか否かが検証される。【００７３】
ＭＲＦ３０１に格納された擬似故障データがＷＲＦ３０２へ読み出されるとき、パリティチェック部３０９は、ＭＲＦ３０１からの入力が誤りを含むことを検出する。あるいは、ＷＲＦ３０２に格納された擬似故障データが演算部３０３へ読み出されるとき、演算部３０３はパリティをチェックし、ＷＲＦ３０２からの入力が誤りを含むことを検出する。【００７４】
このようにデバッグ対象機構のうちのいずれかが誤りを検出すると、その誤りを検出したデバッグ対象機構から制御部３０４に誤りの検出が通知される。また、この通知には、誤りを検出したエントリを識別する情報も含まれる場合もある。例えば、ＭＲＦ３０１における誤りをパリティチェック部３０９が検出した場合、この通知には、ＭＲＦ３０１内のエントリを識別する情報が含まれる。制御部３０４はこの通知によって正常状態から故障検出状態への移行を認識し、ＣＰＵ３００内の各部に故障検出状態への移行を通知し、演算処理を一旦中断するよう各部を制御する。【００７５】
故障検出状態に移行すると、制御部３０４からの指示にしたがって、ＭＲＦ３０１に保持されているＥＣＣにより誤りを訂正する処理が開始される。すなわち、訂正対象のデータを含むＭＲＦ３０１のエントリから、０〜６３ビット目のデータと、７２〜７９ビット目のＥＣＣがＷＲＦ３０２へ読み出される。【００７６】
この読み出しにおいては、訂正対象のデータを含むＭＲＦ３０１のエントリを制御部３０４が指定する。その指定が可能な理由は、ＭＲＦ３０１における誤りが検出された場合は上記のとおり、ＭＲＦ３０１のエントリを識別する情報がパリティチェック部３０９から制御部３０４への通知に含まれるからである。また、ＭＲＦ３０１以外において誤りが検出された場合も、誤りが検出されたデータに対応するＭＲＦ３０１のエントリを制御部３０４が認識しているからである。【００７７】
なお、パリティチェック部３０９は、正常状態ではパリティのチェックを行うが、故障検出状態では入力をそのまま出力するものとする。よって、データとＥＣＣは、正常状態のときと同様に、ＭＲＦ３０１からパリティチェック部３０９を経由してＷＲＦ３０２へ読み出される。【００７８】
上記のようにＷＲＦ３０２の各エントリは７２ビットなので、データとＥＣＣからなる７２ビットを格納することができる。ＷＲＦ３０２へ読み出されたデータとＥＣＣは、演算部３０３を介してＥＣＣチェック・訂正回路３１０へ出力される。ＥＣＣチェック・訂正回路３１０は、入力されたデータとＥＣＣから、２ビットまでの誤りを検出し、１ビットまでの誤りを訂正する。【００７９】
２ビットの誤りが検出された場合は、ＥＣＣチェック・訂正回路３１０によりその誤りを訂正することは不可能である。その場合は、例えば、ＥＣＣチェック・訂正回路３１０から制御部３０４へ２ビットの誤りの検出を通知し、制御部３０４が割り込みを発生させる。それによって割り込み処理が開始され、故障からの回復が試みられる。【００８０】
一方、１ビットの誤りを検出した場合は、ＥＣＣチェック・訂正回路３１０がその誤りを訂正し、訂正後のデータと訂正後のＥＣＣをパリティ生成回路３１１に出力する。また、パリティにのみ擬似故障を発生させた場合には、データとＥＣＣは誤りを含まない。この場合、ＥＣＣチェック・訂正回路３１０は誤りを検出せず、入力されたデータとＥＣＣをそのままパリティ生成回路３１１へ出力する。【００８１】
パリティ生成回路３１１は、入力されたデータからパリティを生成し、データとパリティとＥＣＣからなる８０ビットをセレクタ３１３へ出力する。制御部３０４は、故障検出状態ではパリティ生成回路３１１からの入力を選択するようにセレクタ３１３を制御する。よって、パリティ生成回路３１１からの出力はセレクタ３１３を介してＭＲＦ３０１へ書き込まれる。【００８２】
また、この段階でＷＲＦ３０２にはデータとＥＣＣが書き込まれている。そこで制御部３０４は、ＭＲＦ３０１に訂正後のデータとパリティとＥＣＣが書き込まれた後、必要なデータとパリティをＭＲＦ３０１からＷＲＦ３０２に読み出させる。このＷＲＦ３０２の更新によって故障検出状態から正常状態へと移行する。正常状態へ戻ると、制御部３０４は、故障が検出されたときに実行中だった命令の実行を再開するよう、ＣＰＵ３００の各部を制御する。【００８３】
なお、ＥＣＣチェック・訂正回路３１０が２ビットの誤りを検出した場合も、割り込み処理によって適宜データが訂正された後、ＷＲＦ３０２の更新が行われ、ＣＰＵ３００は正常状態に復帰する。【００８４】
以上が、正常状態から故障検出状態への移行と、故障検出状態から正常状態への回復の動作である。デバッグ対象機構のデバッグは、以上の動作が適切に実行されるか否かの検証を含む。【００８５】
また、上記の説明から分かるように、図３において演算部３０３からＭＲＦ３０１へ至る２つの経路のうち、図示右側の経路は故障検出状態のときのみ使われ、図示左側の経路は正常状態のときのみ使われる。なお、図３には「Ｄａｔａ＋Ｐａｒｉｔｙ  ｏｒ  Ｄａｔａ＋ＥＣＣ」と書いてある箇所が３箇所ある。これは、正常状態ではデータとパリティが転送され、故障検出状態ではデータとＥＣＣが転送されるという意味である。【００８６】
次に、図４から図６を参照して、擬似故障発生制御部３０５と３０７、および擬似故障データ生成回路３０６と３０８の具体例を説明する。図４は第２実施形態における擬似故障発生制御部３０５と３０７の具体例を示す回路図である。以下では説明の便宜上、主に擬似故障発生制御部３０５を取り上げて説明するが、第２実施形態において擬似故障発生制御部３０５と３０７は同様の構成である。【００８７】
図４に示すとおり、擬似故障発生制御部３０５は、ＡＮＤゲート４０１、書き込み回数カウンタ４０２、デコード回路４０３、およびセレクタ４０４を含む。また、擬似故障発生制御部３０５への入力は、１ビットの書き込み指示Ｓ１と、１ビットの擬似故障発生指示Ｓ２と、ｍビットの擬似故障頻度選択信号Ｓ３であり、これら３つの入力はいずれも制御部３０４から与えられる。擬似故障発生制御部３０７への入力も同様である。擬似故障発生制御部３０５からの出力は１ビットの擬似故障データ生成指示Ｓ４であり、擬似故障データ生成回路３０６へ出力される。一方、擬似故障発生制御部３０７は、擬似故障データ生成指示Ｓ４を擬似故障データ生成回路３０８へ出力する。なお、ｍはデコード回路４０３の構成に応じて定まる１以上の整数である。【００８８】
書き込み指示Ｓ１はＡＮＤゲート４０１と書き込み回数カウンタ４０２の双方に入力される。書き込み回数カウンタ４０２は、書き込み指示Ｓ１が発行されるたびに、すなわち書き込み指示Ｓ１が１となるたびに、値を１ずつインクリメントすることにより、ＭＲＦ３０１およびＷＲＦ３０２への書き込み回数を計数するカウンタである。書き込み回数カウンタ４０２が保持する値を以下では「カウンタ値」と呼び、符号「Ｃ」により参照する。【００８９】
カウンタ値Ｃはデコード回路４０３に出力され、デコード回路はカウンタ値Ｃをデコードして、ｎ個の信号を生成する。ｎは２以上の整数である。これらｎ個の信号のそれぞれを以下では「頻度信号」と呼び、符号「Ｆ１」〜「Ｆｎ」により参照する。各頻度信号Ｆｊ（１≦ｊ≦ｎ）は１ビットの信号である。頻度信号Ｆ１〜Ｆｎは、それぞれに対して予め決められた書き込み回数ごとに１となる。セレクタ４０４は、擬似故障頻度選択信号Ｓ３にしたがって頻度信号Ｆ１〜Ｆｎのいずれかを選択してＡＮＤゲート４０１に出力する。【００９０】
ＡＮＤゲート４０１には、セレクタ４０４からの出力と、書き込み指示Ｓ１と、擬似故障発生指示Ｓ２が入力される。ＡＮＤゲート４０１は、これら３つの入力の論理積（ＡＮＤ）を擬似故障データ生成指示Ｓ４として擬似故障発生制御部３０５の外部へ出力する。擬似故障頻度選択信号Ｓ３により選択された頻度信号Ｆｊと、書き込み指示Ｓ１と、擬似故障発生指示Ｓ２がいずれも１のときのみ、擬似故障データ生成指示Ｓ４が１となって、それによって擬似故障発生制御部３０５は擬似故障データ生成回路３０６に擬似故障を発生させるよう指示する。【００９１】
例えば、書き込み回数カウンタ４０２が８ビットのカウンタであり、ｎ＝５の場合を例として、より具体的に説明する。この例では、カウンタ値Ｃは０から２５５のいずれかの値であり、カウンタ値Ｃが２５５の状態で次に書き込み指示Ｓ１が１となると、カウンタ値Ｃは０に更新される。また、頻度信号Ｆ１〜Ｆ５はそれぞれ、カウンタ値Ｃが１２８、６４、３２、１６、８の倍数のときのみ１となり、それ以外の場合は０となる。デコード回路４０３は、カウンタ値Ｃを入力としてそのようなデコードを行い、５つの頻度信号Ｆ１〜Ｆ５を出力する回路である。【００９２】
擬似故障頻度選択信号Ｓ３は、５つの頻度信号Ｆ１〜Ｆ５のうち１つを選択することができればよいので、３ビットあれば十分である。つまり、この例ではｍ＝３である。また、セレクタ４０４は、擬似故障頻度選択信号Ｓ３が０、１、２、３、４のとき、それぞれ頻度信号Ｆ１、Ｆ２、Ｆ３、Ｆ４、Ｆ５を選択する。【００９３】
例えば、常に擬似故障発生指示Ｓ２が１であり、擬似故障頻度選択信号Ｓ３が２である場合には、書き込み指示Ｓ１が１となるたびにカウンタ値Ｃが更新され、頻度信号Ｆ３が選択される。つまり、カウンタ値Ｃが０、３２、６４、９６、１２８、１６０、１９２、２２４のいずれかとなるたびに、セレクタ４０４が１を出力し、ＡＮＤゲート４０１への入力が３つとも１となり、ＡＮＤゲート４０１の出力が１となる。それ以外の場合はセレクタ４０４が０を出力するので、ＡＮＤゲート４０１の出力は０となる。すなわち、この例では、書き込み指示Ｓ１の発行回数が３２の倍数となるたびに、擬似故障発生制御部３０５が擬似故障データ生成指示Ｓ４を出力する。【００９４】
したがって、常に擬似故障発生指示Ｓ２を１とし、かつ、擬似故障頻度選択信号Ｓ３を所望の頻度に対応する値に固定しておけば、所望の頻度で擬似故障発生制御部３０５が擬似故障データ生成指示Ｓ４を出力する。また、所望の頻度が変わった場合は、擬似故障頻度選択信号Ｓ３の値を変更すれば、変更後の所望の頻度で擬似故障発生制御部３０５から擬似故障データ生成指示Ｓ４が出力される。【００９５】
なお、上記の例では、頻度信号Ｆ１〜Ｆ５のそれぞれは、カウンタ値Ｃが１２８、６４、３２、１６、８の倍数のときのみ１となる。このように、頻度信号Ｆｊに関連づけられた書き込み指示Ｓ１の発行回数として、１２８、６４、３２、１６、８などの２の冪乗の値を採用したのは、デコード回路４０３を簡素に構成することが可能であるためである。しかし、頻度信号Ｆｊに関連づけられた書き込み指示Ｓ１の発行回数が、２の冪乗でなくてもよいことは当然である。【００９６】
次に、図５の回路図を参照して、第２実施形態における擬似故障データ生成回路３０８の具体例を説明する。なお、同じ図４を参照して説明した擬似故障発生制御部３０５と３０７を区別するため、以下では図４で用いた符号「Ｓ４」のかわりに符号「Ｓ４−１」と「Ｓ４−２」を用いて説明する。【００９７】
第２実施形態では、擬似故障発生制御部３０７から擬似故障データ生成指示Ｓ４−１が発行されたときに擬似故障データ生成回路３０８が値を反転させるビットの位置がａビット目であると、予め固定的に決められている。ここで、データは０〜６３ビット目、パリティは６４〜７１ビット目、ＥＣＣは７２〜７９ビット目という上記の仮定から、ａは０≦ａ≦７１なる整数である。以下では、ａビット目のビット信号を符号「Ｂａ」で参照する。【００９８】
擬似故障データ生成回路３０８は、擬似故障発生制御部３０７から出力される１ビットの擬似故障データ生成指示Ｓ４−１と、ＥＣＣ生成回路３１２から出力されたうちのビット信号Ｂaとの排他的論理和を演算するＸＯＲゲート４０５を備える。したがって、ビット信号Ｂａは、擬似故障データ生成指示Ｓ４−１が１のときのみ値が反転される。【００９９】
ＸＯＲゲート４０５は演算結果を擬似故障データ生成回路３０８の外部へ出力する。また、擬似故障データ生成回路３０８に入力される８０ビットのうち、ａビット目以外の７９ビットは、どのような場合でも入力された値がそのまま擬似故障データ生成回路３０８から出力される。これにより、擬似故障発生制御部３０７が擬似故障データ生成指示Ｓ４−１を発行したときのみ、すなわち擬似故障データ生成指示Ｓ４−１が１のときのみ、擬似故障データ生成回路３０８は1ビットの擬似故障を発生させ、それ以外のときは入力をそのまま出力する。【０１００】
次に、図６の回路図を参照して、第２実施形態における擬似故障データ生成回路３０６の具体例を説明する。
擬似故障発生制御部３０５から擬似故障データ生成指示Ｓ４−２が発行されたときに擬似故障データ生成回路３０６が反転させるビットの数は、1または2である。そして、第2実施形態では、反転させるべきビットの位置が予め固定的に決められている。すなわち、ｂとｃが０≦ｂ，ｃ≦７９なる整数であるとして、擬似故障データ生成回路３０６は、擬似故障データ生成指示Ｓ４−２を受けたとき、入力された８０ビットのうちｂビット目またはｃビット目の一方を反転させるか、あるいは双方を反転させる。以下ではｂビット目とｃビット目のビット信号をそれぞれ符号「Ｂｂ」と「Ｂｃ」で参照する。【０１０１】
擬似故障データ生成回路３０６は、ＡＮＤゲートとＸＯＲゲートの組を２組含む。ＡＮＤゲート４０６は、擬似故障発生制御部３０５から出力される１ビットの擬似故障データ生成指示Ｓ４−２と、制御部３０４から出力される1ビットの擬似故障ビット選択信号Ｓ５−１との論理積を演算し、演算結果をＸＯＲゲート４０７へ出力する。擬似故障ビット選択信号Ｓ５−１は、１のときｂビット目を反転させることを指示する信号である。ＸＯＲゲート４０７は、ＡＮＤゲート４０６から出力された1ビットの信号と、擬似故障データ生成回路３０８の出力のうちのｂビット目のビット信号Ｂｂとの排他的論理和を演算し、擬似故障データ生成回路３０６の外部へ出力する。【０１０２】
同様に、ＡＮＤゲート４０８は、擬似故障発生制御部３０５から出力される１ビットの擬似故障データ生成指示Ｓ４−２と、制御部３０４から出力される1ビットの擬似故障ビット選択信号Ｓ５−２との論理積を演算し、演算結果をＸＯＲゲート４０９へ出力する。擬似故障ビット選択信号Ｓ５−２は、１のときｃビット目を反転させることを指示する信号である。ＸＯＲゲート４０９は、ＡＮＤゲート４０８から出力された1ビットの信号と、擬似故障データ生成回路３０８の出力のうちのｃビット目のビット信号Ｂｃとの排他的論理和を演算し、擬似故障データ生成回路３０６の外部へ出力する。【０１０３】
なお、第２実施形態においては、制御部３０４が、擬似故障データ生成指示Ｓ４−２を発行するときは必ず、擬似故障ビット選択信号Ｓ５−１とＳ５−２の少なくとも一方の値を１とするよう動作する。また、擬似故障データ生成回路３０６に入力される８０ビットのうち、ｂビット目とｃビット目以外の７８ビットは、どのような場合でも入力された値がそのまま擬似故障データ生成回路３０６から出力される。【０１０４】
つまり、擬似故障発生制御部３０５が擬似故障データ生成指示Ｓ４−２を発行していない場合、すなわち擬似故障データ生成指示Ｓ４−２が０の場合、擬似故障データ生成回路３０６は入力をそのまま出力する。逆に、擬似故障発生制御部３０５が擬似故障データ生成指示Ｓ４−２を発行した場合、擬似故障データ生成回路３０６は擬似故障ビット選択信号Ｓ５−１とＳ５−２の値に応じて、ｂビット目のみ、ｃビット目のみ、またはｂビット目とｃビット目の双方に擬似故障を発生させる。このようにして、制御部３０４による制御に基づいて、1ビットまたは2ビットの擬似故障を含む擬似故障データが生成される。第２実施形態では、擬似故障ビット選択信号Ｓ５−１とＳ５−２によって、擬似故障データ生成回路３０６が反転させるべきビットの数と位置の双方が指示される。【０１０５】
以上、第２実施形態について詳細に説明したが、第２実施形態には次のような効果がある。
第１の効果は、第１実施形態と同様に、ＷＲＦ３０２には正常な出力データとパリティをそのまま書き込み、ＭＲＦ３０１にのみ擬似故障データを書き込むことができる点である。これにより、パリティチェック部３０９やＥＣＣチェック・訂正回路３１０のデバッグを効率よく行えるようになる。【０１０６】
パリティチェック部３０９のデバッグとは、ＭＲＦ３０１からＷＲＦ３０２へデータを読み出す際にパリティチェック部３０９が行うチェック動作が正常か否かという検証である。また、ＥＣＣチェック・訂正回路３１０のデバッグとは、検出されるべき誤りが、パリティチェック部３０９の正常なチェック動作によって適切に検出された場合に、その検出をトリガとしてＥＣＣチェック・訂正回路３１０がＥＣＣから正しくデータを訂正することができるか否かという検証である。【０１０７】
なお、従来と同様に、ＭＲＦ３０１とＷＲＦ３０２の双方に同時に同じ故障が発生するというパターンもシミュレート可能である。よって、この第１の効果は、シミュレート可能な故障発生のパターンが広がったとも言える。すなわち、第２実施形態では、制御部３０４が擬似故障発生制御部３０５へは擬似故障発生指示を発行せず、擬似故障発生制御部３０７にのみ擬似故障発生指示を発行することにより、ＭＲＦ３０１とＷＲＦ３０２の双方に同時に同じ故障が発生するというパターンを簡単にシミュレートすることができる。【０１０８】
第２の効果は、擬似故障発生制御部３０５と３０７において、それぞれ擬似故障の発生頻度が可変となるよう制御されている点である。これにより、故障検出時に行われる複数の処理に対するデバッグが容易になる。【０１０９】
一般に、故障の発生頻度に応じて、ハードウェアで実現されるデバッグ対象機構による処理やソフトウェアで実現されるデバッグ対象機構による処理など複数の種類の処理が、切り替えられ、あるいは併用される。第２実施形態によれば、制御部３０４が発行する２つの擬似故障頻度選択信号を所望の頻度にあわせて設定するだけで、容易に所望の頻度で擬似故障を発生させることができる。そのため、上記の複数の処理の切り替えまたは併用が適切になされているか否かの検証が容易である。また、現実と同様に、ＭＲＦ３０１とＷＲＦ３０２に異なる頻度で故障が生じることをシミュレートすることも容易である。【０１１０】
第３の効果は、ＭＲＦ３０１でのみＥＣＣを採用したことにともなって、ＥＣＣに関連する部分のみを効率的にデバッグすることが可能な点である。例えば、図６で説明したｂビット目とｃビット目を７２≦ｂ，ｃ≦７９と設定することにより、ＥＣＣの部分にのみ擬似故障を発生させることができる。また、２ビットの擬似故障を、ＷＲＦ３０２に対しては発生させずに、ＭＲＦ３０１に対してのみ発生させることも可能である。【０１１１】
第４の効果は、データの信頼性と回路規模のバランスが良い点である。ＭＲＦ３０１がパリティとＥＣＣを保持し、それにあわせてＥＣＣチェック・訂正回路３１０、パリティ生成回路３１１、ＥＣＣ生成回路３１２が設けられているため、ＭＲＦ３０１におけるデータの信頼性は従来よりも高い。一方で、ＭＲＦ３０１よりもソフトエラー等の故障の発生頻度が低いＷＲＦ３０２ではパリティのみを採用してＥＣＣを採用しないことによって、不必要に回路規模が増大することを防いでいる。よって、ＣＰＵ３００全体におけるデータの信頼性と回路規模のバランスが良い。【０１１２】
第５の効果は、回路や配線の共有化によってＣＰＵ３００全体の回路規模が抑えられている点である。例えば、上記のとおりＷＲＦ３０２は、データとパリティからなる７２ビットを格納する場合と、データとＥＣＣからなる７２ビットを格納する場合があり、同じ格納領域を複数の用途で使い回している。また、このようにＥＣＣによる訂正を行う際に、ＷＲＦ３０２や演算部３０３を介してデータとＥＣＣをＥＣＣチェック・訂正回路３１０へ送るのは、既存のデータ転送経路を有効利用し、新たな配線を作らないようにするためである。他にも、演算部３０３から擬似故障データ生成回路３０８を介してＷＲＦ３０２へ至る経路と、演算部３０３から擬似故障データ生成回路３０６を介してＭＲＦ３０１へ至る経路の一部を重複させることで不要な配線を防いでいる。その結果、ＣＰＵ３００全体の回路規模が抑えられている。【０１１３】
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
図２と図３には類似の構成要素が示されているが、構成要素間の接続関係は図２と図３で異なる。このことからも明らかなとおり、構成要素間の具体的な接続関係は、実施形態に応じて変えることが可能である。例えば、図３において、擬似故障データ生成回路３０８を分岐点ＰとＷＲＦ３０２の間に移動してもよい。【０１１４】
上記の実施形態における各種の指示は、０が「指示が発行されていないこと」を表し、１が「指示が発行されていること」を表すものと仮定している。しかし、実施形態によっては０と１の意味が逆でもよく、その場合、必要に応じて図４〜図６の回路を変更すればよい。【０１１５】
また、第２実施形態のようにＥＣＣを利用することは必須ではなく、ＥＣＣを利用する場合にも、ＥＣＣの種類は任意に選択することができる。ＳＥＣＤＥＤ以外のＥＣＣ、例えば、３ビットまでの誤りを検出するようなＥＣＣをＭＲＦ３０１で採用してもよい。また、データ、パリティ、およびＥＣＣのビット数も実施形態によって様々である。【０１１６】
採用する誤り検出符号の種類に応じて、上記の第１または第２実施形態を次のように変形することが可能である。すなわち、ｄが１以上であるとして、ｄビットまでの誤りを検出することが可能な誤り検出符号を、図２の第１のレジスタファイル２０１または図３のＭＲＦ３０１において採用する。そして、図２の第１の生成部２０６または図３の擬似故障データ生成回路３０６が、少なくとも出力データおよび誤り検出符号を入力として受け取り、入力のうちｄビット以下のビットを反転させることにより、第１の擬似故障データを生成する。この場合、図２の第１の生成部２０６または図３の擬似故障データ生成回路３０６は、１以上ｄ以下の数ｘを指定するビット選択指示をさらに受け取り、入力のうちｘビットを反転させてもよい。第２実施形態では図６に示すように、ｄ＝２であり、擬似故障ビット選択信号Ｓ５−１とＳ５−２によってｘ＝１またはｘ＝２であると指定されているが、ビット選択指示は図６と異なる形式で与えられてもよい。【０１１７】
第２実施形態では、擬似故障データ生成回路３０８と３０６のいずれにおいても、擬似故障を発生させるべきビットの位置は固定的に予め定められている。しかし、擬似故障を発生させるべきビットの位置を可変としてもよい。【０１１８】
例えば、制御部３０４がビット位置指定指示を擬似故障データ生成回路３０６に対して発行し、ビット位置指定指示によって示される１つまたは２つの位置のビットの値を擬似故障データ生成回路３０６が反転してもよい。図６では２つの擬似故障ビット選択信号Ｓ５−１とＳ５−２に対応して、ＡＮＤゲートとＸＯＲゲートの組が２組示されているが、このようなＡＮＤゲートとＸＯＲゲートの組を８０組設けることによって、８０ビットのうちの任意の位置に擬似故障を発生させてもよい。なお、そのためにはビット位置指定指示を、１つまたは２つのビットのみが１であり、他のビットは０であるような８０ビットにより表せばよい。また、これ以外の構成によって、擬似故障を発生させるべきビットの位置を可変としてもよい。【０１１９】
また、デバッグの対象である、デバッグ対象機構は、上記の各実施形態で例示したものに限らない。
さらに、第２実施形態では、擬似故障発生制御部３０７と３０５の双方が擬似故障データ生成指示を発行することがないように制御部３０４が制御していたが、異なる制御方法を採用することもできる。【０１２０】
例えば、実施形態によっては、制御部３０４が、擬似故障発生制御部３０５と３０７の双方に擬似故障データ生成指示を発行するときは常に、擬似故障データ生成回路３０６に対して、１ビットにのみ擬似故障を発生するよう擬似故障ビット選択信号を発行する。これにより、擬似故障発生制御部３０７と３０５の双方が擬似故障データ生成指示を発行する場合でも、検出の対象として想定外の３ビット以上の擬似故障が発生することを防ぐことができる。そのため、デバッグ対象機構を有効にデバッグすることができる。【０１２１】
また、第２実施形態では、書き込み指示の発行回数に対する割合を指定することにより擬似故障の発生頻度を調整しており、そのために図４のような回路構成を採用した。しかし、頻度の調整の仕方は上記の例に限らない。例えば、実施形態によっては、クロック数に対する割合を指定することにより擬似故障の発生頻度を調整し、指定された時間間隔で擬似故障を発生させてもよい。
【図１】
2008155795.tif 000003
【図２】
2008155795.tif 000004
【図３】
2008155795.tif 000005
【図４】
2008155795.tif 000006
【図５】
2008155795.tif 000007
【図６】
2008155795.tif 000008
【手続補正書】
【提出日】平成21年7月15日(2009.7.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のレジスタファイルと、
該第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルと、
該第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する演算手段と、
前記出力データおよび該出力データの誤りを検出するための誤り検出符号を前記第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示と、前記第１および第２のレジスタファイルそれぞれの擬似故障の生成を指示する第１および第２の発生指示を発行する指示手段と、
前記書き込み指示と前記第１の発生指示とを受け取ったとき、第１の生成指示を発行する第１の制御手段と、
前記第１の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第１の擬似故障データを生成して前記第１のレジスタファイルに出力し、前記第１の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第１のレジスタファイルに出力する第１の生成手段と、
前記書き込み指示と前記第２の発生指示とを受け取ったとき、第２の生成指示を発行する第２の制御手段と、
前記第２の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第２の擬似故障データを生成して前記第２のレジスタファイルに出力し、前記第２の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第２のレジスタファイルに出力する第２の生成手段と、
を備えることを特徴とする処理装置。
【請求項２】
前記第１の制御手段は、前記第１の生成指示を発行する頻度を指示する第１の頻度選択指示をさらに受け取り、該第１の頻度選択指示に応じて、前記第１の生成指示を発行する頻度を調整することを特徴とする請求項１に記載の処理装置。
【請求項３】
前記第１の頻度選択指示は、前記書き込み指示の発行回数を示す複数の選択肢のうちの１つを選択する指示であり、
前記第１の制御手段は、選択された前記選択肢に対応する前記発行回数に前記書き込み指示の発行回数が達するとともに前記第１の発生指示を受け取っているときに、前記第１の生成指示を発行することによって、前記第１の生成指示を発行する前記頻度を調整する、
ことを特徴とする請求項２に記載の処理装置。
【請求項４】
前記第２の制御手段は、前記第２の生成指示を発行する頻度を指示する第２の頻度選択指示をさらに受け取り、該第２の頻度選択指示に応じて、前記第２の生成指示を発行する頻度を調整することを特徴とする請求項１に記載の処理装置。
【請求項５】
前記第２の頻度選択指示は、前記書き込み指示の発行回数を示す複数の選択肢のうちの１つを選択する指示であり、
前記第２の制御手段は、選択された前記選択肢に対応する前記発行回数に前記書き込み指示の発行回数が達するとともに前記第２の発生指示を受け取っているときに、前記第２の生成指示を発行することによって、前記第２の生成指示を発行する前記頻度を調整する、
ことを特徴とする請求項５に記載の処理装置。
【請求項６】
前記第１のレジスタファイルに対して誤り検出が可能なビット数の上限を、１以上であるｄとして、
前記第１の生成手段は、少なくとも前記出力データおよび前記誤り検出符号を入力として受け取り、入力のうちｄビット以下のビットを反転させることにより、前記第１の擬似故障データを生成する、
ことを特徴とする請求項１に記載の処理装置。
【請求項７】
前記第１の生成手段が反転させるべきビットの数である、１以上ｄ以下の数ｘを指定するビット選択指示を、前記第１の生成手段がさらに受け取ることを特徴とする請求項６に記載の処理装置。
【請求項８】
前記誤り検出符号は、誤り訂正が不可能な種類の符号であり、
前記第１の生成手段は、前記出力データから生成された誤り訂正符号も入力として受け取り、前記出力データと前記誤り検出符号と前記誤り訂正符号のうちのｄビット以下のビットを反転させることによって、前記第１の擬似故障データを生成することを特徴とする請求項６に記載の処理装置。
【請求項９】
前記第１の生成手段から出力されて前記第１のレジスタファイルに格納された前記第１の擬似故障データを、前記誤り訂正符号に基づいて訂正する誤り訂正手段をさらに備えることを特徴とする請求項８に記載の処理装置。
【請求項１０】
第１のレジスタファイルと、該第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルと、該第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する演算手段と、前記出力データおよび該出力データの誤りを検出するための誤り検出符号を前記第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示を発行する指示手段を備える処理装置が、擬似故障の生成を制御する制御方法であって、
前記第１のレジスタファイルの擬似故障の生成を指示する第１の発生指示を発行し、
前記書き込み指示と前記第１の発生指示の双方が発行されたとき、前記出力データおよび前記誤り検出符号に基づいて第１の擬似故障データを生成して、前記第１のレジスタファイルに出力し、
前記第１の発生指示なしに前記書き込み指示が発行されたとき、前記出力データおよび前記誤り検出符号を前記第１のレジスタファイルに出力し、
前記第２のレジスタファイルの擬似故障の生成を指示する第２の発生指示を発行し、
前記書き込み指示と前記第２の発生指示の双方が発行されたとき、前記出力データおよび前記誤り検出符号に基づいて第２の擬似故障データを生成して、前記第２のレジスタファイルに出力し、
前記第２の発生指示なしに前記書き込み指示が発行されたとき、前記出力データおよび前記誤り検出符号を前記第２のレジスタファイルに出力する、
ことを特徴とする制御方法。
【手続補正書】
【提出日】平成21年12月7日(2009.12.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のレジスタファイルと、
該第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルと、
該第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する演算手段と、
前記出力データおよび該出力データの誤りを検出するための誤り検出符号を前記第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示と、前記第１および第２のレジスタファイルそれぞれの擬似故障の生成を指示する第１および第２の発生指示を発行する指示手段と、
前記書き込み指示と前記第１の発生指示とを受け取ったとき、第１の生成指示を発行する第１の制御手段と、
前記第１の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第１の擬似故障データを生成して前記第１のレジスタファイルに出力し、前記第１の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第１のレジスタファイルに出力する第１の生成手段と、
前記書き込み指示と前記第２の発生指示とを受け取ったとき、第２の生成指示を発行する第２の制御手段と、
前記第２の生成指示を受け取ったとき、前記出力データおよび前記誤り検出符号に基づいて第２の擬似故障データを生成して前記第２のレジスタファイルに出力し、前記第２の生成指示がないときは前記出力データおよび前記誤り検出符号を前記第２のレジスタファイルに出力する第２の生成手段と、
を備えることを特徴とする処理装置。
【請求項２】
前記第１の制御手段は、前記第１の生成指示を発行する頻度を指示する第１の頻度選択指示をさらに受け取り、該第１の頻度選択指示に応じて、前記第１の生成指示を発行する頻度を調整することを特徴とする請求項１に記載の処理装置。
【請求項３】
前記第１の頻度選択指示は、前記書き込み指示の発行回数を示す複数の選択肢のうちの１つを選択する指示であり、
前記第１の制御手段は、選択された前記選択肢に対応する前記発行回数に前記書き込み指示の発行回数が達するとともに前記第１の発生指示を受け取っているときに、前記第１の生成指示を発行することによって、前記第１の生成指示を発行する前記頻度を調整する、
ことを特徴とする請求項２に記載の処理装置。
【請求項４】
前記第２の制御手段は、前記第２の生成指示を発行する頻度を指示する第２の頻度選択指示をさらに受け取り、該第２の頻度選択指示に応じて、前記第２の生成指示を発行する頻度を調整することを特徴とする請求項１に記載の処理装置。
【請求項５】
前記第２の頻度選択指示は、前記書き込み指示の発行回数を示す複数の選択肢のうちの１つを選択する指示であり、
前記第２の制御手段は、選択された前記選択肢に対応する前記発行回数に前記書き込み指示の発行回数が達するとともに前記第２の発生指示を受け取っているときに、前記第２の生成指示を発行することによって、前記第２の生成指示を発行する前記頻度を調整する、
ことを特徴とする請求項４に記載の処理装置。
【請求項６】
前記第１のレジスタファイルに対して誤り検出が可能なビット数の上限を、１以上であるｄとして、
前記第１の生成手段は、少なくとも前記出力データおよび前記誤り検出符号を入力として受け取り、入力のうちｄビット以下のビットを反転させることにより、前記第１の擬似故障データを生成する、
ことを特徴とする請求項１に記載の処理装置。
【請求項７】
前記第１の生成手段が反転させるべきビットの数である、１以上ｄ以下の数ｘを指定するビット選択指示を、前記第１の生成手段がさらに受け取ることを特徴とする請求項６に記載の処理装置。
【請求項８】
前記誤り検出符号は、誤り訂正が不可能な種類の符号であり、
前記第１の生成手段は、前記出力データから生成された誤り訂正符号も入力として受け取り、前記出力データと前記誤り検出符号と前記誤り訂正符号のうちのｄビット以下のビットを反転させることによって、前記第１の擬似故障データを生成することを特徴とする請求項６に記載の処理装置。
【請求項９】
前記第１の生成手段から出力されて前記第１のレジスタファイルに格納された前記第１の擬似故障データを、前記誤り訂正符号に基づいて訂正する誤り訂正手段をさらに備えることを特徴とする請求項８に記載の処理装置。
【請求項１０】
第１のレジスタファイルと、該第１のレジスタファイルが保持するデータの一部を保持する第２のレジスタファイルと、該第２のレジスタファイルから読み出したデータを使って演算を行い、演算結果を出力データとして出力する演算手段と、前記出力データおよび該出力データの誤りを検出するための誤り検出符号を前記第１および第２のレジスタファイルの双方に書き込むことを指示する書き込み指示を発行する指示手段を備える処理装置が、擬似故障の生成を制御する制御方法であって、
前記第１のレジスタファイルの擬似故障の生成を指示する第１の発生指示を発行し、
前記書き込み指示と前記第１の発生指示の双方が発行されたとき、前記出力データおよび前記誤り検出符号に基づいて第１の擬似故障データを生成して、前記第１のレジスタファイルに出力し、
前記第１の発生指示なしに前記書き込み指示が発行されたとき、前記出力データおよび前記誤り検出符号を前記第１のレジスタファイルに出力し、
前記第２のレジスタファイルの擬似故障の生成を指示する第２の発生指示を発行し、
前記書き込み指示と前記第２の発生指示の双方が発行されたとき、前記出力データおよび前記誤り検出符号に基づいて第２の擬似故障データを生成して、前記第２のレジスタファイルに出力し、
前記第２の発生指示なしに前記書き込み指示が発行されたとき、前記出力データおよび前記誤り検出符号を前記第２のレジスタファイルに出力する、
ことを特徴とする制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
デバッグモードのとき、指示部２０４が第１の発生指示を発行すれば、書き込み指示にしたがって、第１のレジスタファイル２０１には第１の擬似故障データが出力される。また、デバッグモードのとき、指示部２０４が第２の発生指示を発行すれば、書き込み指示にしたがって、第２のレジスタファイル２０２には第２の擬似故障データが出力される。デバッグモードのときに、指示部２０４が第１と第２の発生指示の一方あるいは双方を必要に応じて発行することにより、デバッグの対象に合わせた所望のパターンの故障のシミュレーションが可能となる。したがって、シミュレートされたパターンの故障に対して、誤り検出回路等が正しく動作するか否かを検査することが可能である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１２０
【補正方法】変更
【補正の内容】
【０１２０】
例えば、実施形態によっては、制御部３０４が、擬似故障発生制御部３０５と３０７の双方に擬似故障発生指示を発行するときは常に、擬似故障データ生成回路３０６に対して、１ビットにのみ擬似故障を発生するよう擬似故障ビット選択信号を発行する。これにより、擬似故障発生制御部３０７と３０５の双方が擬似故障データ生成指示を発行する場合でも、検出の対象として想定外の３ビット以上の擬似故障が発生することを防ぐことができる。そのため、デバッグ対象機構を有効にデバッグすることができる。
【国際調査報告】
2008155795.tif 000009
2008155795.tif 000010