(57)【要約】【課題】半導体メモリに擬似的にエラーを発生させる擬似エラー発生装置を提供する。【解決手段】乱数によって決定されるメモリのアドレスのデータの情報ビットと冗長ビットの両方を、エラー検出やエラー訂正しないで読み取り、同じく乱数によって決定されるビット位置のビットを反転させ、同じメモリの同じアドレスにビット反転させたデータを書き込む。反転させるビット数は、どのようなエラーを擬似的に発生させたいかによって、１ビット、２ビット以上など、適切に設定する。【選択図】図２
2012073678.tif 000002
【特許請求の範囲】
【請求項１】
情報ビットと冗長ビットからなるデータを格納する情報記憶部と、
該情報記憶部から、任意に設定されたアドレスの、情報ビットと冗長ビットを合わせたデータを、エラー検出及びエラー訂正をしないで読み出す読み出し手段と、
該読み出された、情報ビットと冗長ビットを合わせたデータのうち、任意に設定されたビット位置の１以上のビットを反転し、該ビット反転されたデータを該情報記憶部の元のアドレスに書き戻す書き戻し手段と、
を備えることを特徴とする擬似エラー発生装置。
【請求項２】
前記読み出し手段の読み出し動作と前記書き戻し手段の書き戻し動作からなる一連の動作を繰り返し行なう時間間隔を設定するエラー発生間隔設定部を更に備えることを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項３】
前記エラー発生間隔設定部は、異なる時間間隔を保持する複数の設定部からなり、これらを切り換えて使用可能なことを特徴とする請求項２に記載の擬似エラー設定装置。
【請求項４】
前記情報記憶部は、複数のメモリからなり、
どのメモリについて、前記読み出し手段の読み出し動作と、前記書き戻し手段の書き戻し動作を行なうかを設定可能なメモリ選択部を更に備えることを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項５】
ＣＰＵの前記情報記憶部へのアクセスの終了を待って、前記読み出し手段の読み出し動作と、前記書き戻し手段の書き戻し動作を行なうことを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項６】
前記読み出し手段の読み出し動作と、前記書き戻し手段の書き戻し動作を行なっている間は、ＣＰＵからの前記情報記憶部へのアクセスを待たせることを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項７】
前記任意に設定されたアドレスは、最大値と最小値で決められる範囲内で発生する乱数によって指定されることを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項８】
前記任意に設定されたビット位置は、最大値と最小値で決められる範囲内で発生する乱数によって指定されることを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項９】
前記情報記憶部は、キャッシュメモリであり、
該キャッシュメモリに格納されるタグ部を含む情報ビットと冗長ビットを合わせたデータについて、前記読み出し手段の読み出し動作と、前記書き戻し手段の書き戻し動作を行うことを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項１０】
カウントアップの最大値をｎとしたとき、ｎを設定可能なｎ進カウンタを更に備え、
ｎ回の１ビットの擬似エラーに対し、１回の２ビット以上の擬似エラーを発生させることを特徴とする請求項１に記載の擬似エラー発生装置。
【請求項１１】
前記読み出し手段と前記書き戻し手段の組を複数備える請求項１に記載の擬似エラー発生装置。
【請求項１２】
キャッシュメモリを含むＣＰＵを複数備えた装置であり、
該複数のＣＰＵ内の複数の該キャッシュメモリに対しアドレスを割り振り、該アドレスもランダムに発生させる機構を搭載した請求項１の擬似エラー発生機構
【請求項１３】
請求項１の擬似エラー発生装置を備えた半導体装置。
【請求項１４】
情報ビットと冗長ビットからなるデータを格納する情報記憶部を備えた情報装置における擬似エラー発生方法であって、
該情報記憶部から、任意に設定されたアドレスの、情報ビットと冗長ビットを合わせたデータを、エラー検出及びエラー訂正をしないで読み出し、
該読み出された、情報ビットと冗長ビットを合わせたデータのうち、任意に設定されたビット位置の１以上のビットを反転し、該ビット反転されたデータを該情報記憶部の元のアドレスに書き戻す、
ことを特徴とする擬似エラー発生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の実施形態は、半導体装置のメモリ内に発生するソフトエラーを擬似的に発生させる擬似エラー発生装置に関する。
【背景技術】
【０００２】
近年、半導体装置の構成の微細化が進み、半導体メモリの回路も非常に微細な構成となっている。したがって、半導体メモリの回路は、外部からのわずかなエネルギーの影響でも動作に影響を受けやすくなっており、半導体メモリに対する、α線や宇宙線（中性子線）によるソフトエラーが問題になっている。このようなソフトエラーによるデータのエラーを訂正するために、ＥＣＣ回路による１ｂｉｔエラー訂正を行なうことが、大容量のメモリ装置では常識になっている。さらに、半導体プロセスの微細化が進む中、マイクロプロセッサ内のキャッシュメモリのソフトエラーや、中性子線による多ビットエラーの発生という問題も出ている。
【０００３】
したがって、ソフトエラーに対する対策をとる必要があるが、この対策が、ソフトエラーに対し有効に動作するか否かを調べる必要がある。そのためには、ソフトエラーを擬似的に発生させて、動作を試験する必要がある。
【０００４】
従来技術には、擬似的にエラーをメモリに注入する手法が存在するが、この手法では、メモリユニットがソケットやコネクタを介して接続されていなければならい、また、ＣＰＵと同一パッケージに実装されているキャッシュメモリが対象となりえない構成となっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２１９２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以下の実施形態では、半導体メモリに擬似的にエラーを発生させる擬似エラー発生装置を提供する。
【課題を解決するための手段】
【０００７】
本実施形態の一側面における擬似エラー発生装置は、情報ビットと冗長ビットからなるデータを格納する情報記憶部と、該情報記憶部から、任意に設定されたアドレスの、情報ビットと冗長ビットを合わせたデータを、エラー検出やエラー訂正をしないで読み出す読み出し手段と、該読み出された、情報ビットと冗長ビットを合わせたデータのうち、任意に設定されたビット位置の１以上のビットを反転し、該ビット反転されたデータを該情報記憶部の元のアドレスに書き戻す書き戻し手段とを備える。
【発明の効果】
【０００８】
以下の実施形態によれば、半導体メモリに、ソフトエラーに対応する擬似的なエラーを発生させる擬似エラー発生装置が提供される。
【図面の簡単な説明】
【０００９】
【図１】本実施形態の擬似エラー発生装置を用いたシステム構成図である。
【図２】擬似エラー発生部の構成図である。
【図３】キャッシュメモリへのエラー書込みについて説明する図（その１）である。
【図４】キャッシュメモリへのエラー書込みについて説明する図（その２）である。
【図５】図２のn進カウンタの構成を示す図である。
【図６】最大値と最小値を持つ、図２の乱数発生器の構成図である。
【図７】図２の多ビットエラー発生比率制御部の詳細図である。
【図８】擬似多ビットエラーとして、３ビットエラーを発生するための擬似エラー発生部の構成図である。
【図９】図８の多ビットエラー発生比率制御部の詳細図である。
【図１０】本実施形態が適用されるマルチコア情報処理装置の第一例の構成を示す図である。
【図１１】本実施形態が適用されるマルチコア情報処理装置の第二例の構成を示す図である。
【図１２】図１１の擬似エラー発生機構９３の詳細図である。
【発明を実施するための形態】
【００１０】
ソフトエラーには、α線や宇宙線（中性子線）あるいは電源ノイズ等が原因となるが、読み出したときにはエラーとなるが、再書き込みを行った後は正常な読み出しが行えるといった特徴がある。以下の実施形態では、情報記憶（メモリ）部に対しソフトエラーを擬似的に発生させる構成が示される。このように、擬似的にエラーを発生させることによって、装置としてソフトエラーが発生した場合の障害の波及する範囲を特定すること、また、エラー対策が有効であることの確認をするための手段を提供することができる。
【００１１】
すなわち、以下の実施形態は、α線や宇宙線（中性子線）等によるソフトエラーへの対策が必要な情報処理装置において、動作が適切に行われているか否かの確認及び実際の運用状況下でのエラー発生確率を予想するため、メモリに対して擬似的にエラーを発生させるものである。
【００１２】
図１は、本実施形態の擬似エラー発生装置を用いたシステム構成図である。
図１の点線内は、通常、半導体の１チップ１０で構成され、これにメインメモリ１１を接続した構成を有する。擬似エラー発生部１２は、定期的にＣＰＵ１３がキャッシュメモリ１４あるいはメインメモリ１１にアクセスしていない期間を利用して擬似エラーを発生させる。すなわち、メインメモリ１１及びキャッシュメモリ１４に対し冗長ビットも含めて、エラー訂正やエラー検出を行なわないで読み出す。その読み出したデータのランダムに選択された１ビットあるいは2ビット以上の情報を反転させて、読み出したアドレスへ書き込みを行う。この時、書き込み時にＥＣＣ生成回路１５やパリティ生成回路１６から出力されるデータを書き込むのではなく、読み出し時のデータのビット反転結果を冗長ビットも含めてそのまま書き込む。
【００１３】
こうすることで、ＣＰＵ１３からの通常の読み出しが、擬似エラー発生部１２より書き込まれたアドレスから行われると、1ビットあるいは２ビット以上のエラーを発生する。
通常のＣＰＵ１３のメモリへのアクセスは、制御信号のメインメモリ１１へのアクセスＭＭＳ(Main-Memory-Select)信号とキャッシュメモリ１４へのアクセスＣＭＳ(Cache-Memory-Select)信号とＲ／Ｗ(読み出し/書込み)信号によって行われる。
【００１４】
ＣＰＵ１３からメインメモリ１１への書込みは、マルチプレクサＭＰＸ１７にＣＰＵ１３側の信号がメインメモリ１１へ伝達されるように擬似エラー書込み信号（ＰＥＷ）を“０”が擬似エラー発生部より入力される。ＣＰＵはＭＭＳ(Main-Memory-Select)信号をアサートすると同時にアドレス信号ＭＡＤＤを発行し、Ｒ／Ｗ信号をＷｒｉｔｅとしＤａｔａ−Ｏｕｔの内容を有効にする。この時、ＣＰＵ１３からのデータＯｕｔ信号からＥＣＣ生成回路１５でチェックビットが生成され、これもメインメモリ１１に書き込まれる。マルチプレクサＭＰＸ１７からの書き込みデータＷｄａｔａは、トライステートバッファ２２に送られ、メインメモリ1１の入力データとなる。トライステートバッファ２２は、書き込みデータが”１”となる状態と、書き込みデータが”０”になる状態と、メインメモリ１１から読み出したデータを通過させる状態との３状態を持つ。
【００１５】
メインメモリ１１からＣＰＵへの読み出しは、ＭＭＳをアサートすると同時にアドレス信号ＭＡＤＤを発行し、Ｒ／Ｗ信号をＲｅａｄとすることで、所望のアドレスからトライステートバッファ２２を介してデータの読み出しを行う。このとき、読み出しデータＲｄａｔａＭにはＥＣＣビットも含まれ、ＥＣＣ検査部１８で検査が行われ、エラーがなければ、データビットがＣＰＵ１３へ送られ、読み出しが完結する。もし、訂正可能エラー(SEC/DED：Single Error Correct/Double Error Detect方式では１ビットエラー)が発生すると、ＥＣＣ検査部１８においてデータビットのエラーが起きた箇所が訂正され、マルチプレクサＭＰＸ２０を介してＣＰＵ１３に送られる。また、これと同時に訂正可能エラーが発生した旨がＣＰＵ１３へエラー信号を通し通知される。もし、訂正不可能エラー(SEC/DED方式では２ビットエラー)が検出されると、エラー信号を通して訂正不可能エラーが発生したことがＣＰＵ１３へ通知される。
【００１６】
ＣＰＵ１３は、エラーが通知されると割込みを発生し、エラー処理ルーチンを実行し、エラーログをとるなどを行い、装置全体にリセットをかけたり、電源を自動的に落としたりする。
【００１７】
ＣＰＵ１３からキャッシュメモリ１４への書込みは、マルチプレクサＭＰＸ１７にＣＰＵ１３側の信号がキャッシュメモリ１４へ伝達されるように、まず擬似エラー発生部は部擬似エラー書込み信号（ＰＥＷ）を“０”にする。ＣＰＵ１３はＣＭＳ信号をアサートし、これと同時にアドレス信号ＭＡＤＤを発行し、Ｒ／Ｗ信号をＷｒｉｔｅとし、Ｄａｔａ−Ｏｕｔの内容を有効にする。このとき、データＯｕｔ信号からパリティ生成回路１６でチェックビットが生成され、書き込みデータＷｄａｔａと共に、キャッシュメモリ１４に書き込まれる。
【００１８】
キャッシュメモリ１４からＣＰＵ１３への読み出しは、ＣＭＳをアサートすると同時に、アドレス信号ＭＡＤＤを発行し、Ｒ／Ｗ信号をＲｅａｄとすることで、所望のアドレスからデータの読み出しを行う。キャッシュメモリ１４内に当該アドレス信号ＭＡＤＤで指定されたデータがあると、キャッシュヒットとなり、この旨がＣＰＵ１３に通知される。キャッシュメモリ１４から読み出されたデータＲｄａｔａＣは、マルチプレクサＭＰＸ２０を介してＣＰＵ１３に送られる。このとき、パリティビットも同時に読み出され、Ｐ検査部１９においてパリティチェックが行われエラーが発生するとエラー信号線２３を通してＣＰＵ１３へ伝達される。
【００１９】
ＣＰＵ１３は、エラーが通知されると割込みを発生し、エラー処理ルーチンを実行し、エラーログをとるなどを行い、装置全体にリセットをかけたり、電源を自動的に落としたりする。
【００２０】
キャッシャメモリ１４の読み出しにおいては、そのデータがキャッシュメモリ１４に無い場合があるが、このときはキャッシュミスヒットとなり、キャッシュデータの更新等が行われる。通常のシステム動作ではＣＰＵからのアクセスは最初キャッシュに対し行われ、ミスヒットのときのみ、メインメモリへのアクセスが実行される。
【００２１】
ＭＭＳ，ＣＭＳ信号は、擬似エラー発生部１２へ、双方の論理和をとって（不図示）ＣＰＵ−Ａｃｃとして送られる。更に、これらは、キャッシュメモリ１４あるいはメインメモリ１１へ送られ、ＣＰＵ１３のいずれかのメモリへのアクセス中における擬似エラー発生部１２よりのいずれかのメモリへのアクセスを保留するために使用される。メインメモリ１１から読み出されたデータＲｄａｔａＭあるいはキャッシュメモリ１４から読み出されたデータＲｄａｔａＰＣは、マルチプレクサＭＰＸ２１に入力され、いずれかが選択されて擬似エラー発生部１２に入力される。データＲｄａｔａＭは、メインメモリから擬似エラー発生部１２への読み出しデータであり、データＲｄａｔａＰＣは、キャッシュメモリから擬似エラー発生部１２への読み出しデータである。いずれが選択されるかは、擬似エラー発生部１２から出力されるＰＭＭＳ(擬似メインメモリセレクト)信号、あるいは、ＰＣＭＳ（擬似キャッシュメモリセレクト）信号により指定される。ＰＭＭＳ(擬似メインメモリセレクト)信号、あるいは、ＰＣＭＳ（擬似キャッシュメモリセレクト）信号は、メインメモリ１１あるいはキャッシュメモリ１４のいずれに擬似エラーを書き込むかを指定する。また、擬似エラー発生部１２からのいずれかのメモリへのアクセス中は、ＣＰＵ１３からのアクセスを待たせるべく、ＰＥＷ信号が”１”とされて擬似エラー発生部１２からＣＰＵ１３へ発せられる。
【００２２】
擬似エラー発生部１２は、一定間隔でいずれかのメモリへの書込み動作（リードモディファイライト）を行う。リードモディファイライトとは、読み込んだデータを変更した後、変更後のデータを元のアドレスに書き戻すことを示す。このための制御信号ＰＭＭＳ(擬似メインメモリセレクト)、ＰＣＭＳ（擬似キャッシュメモリセレクト）、ＰＲ／Ｗ（擬似Ｒｅａｄ／Ｗｒｉｔｅ）ＰＡＤＤ(擬似アドレス)、ＰＤＡＴＡ−Ｏｕｔ(擬似データＯｕｔ)信号を発行する。これらがマルチプレクサＭＰＸ１７を通じて、いずれかのメモリに到達するように、マルチプレクサＭＸＰ１７の制御信号ＰＥＷを“１”にする。また、このＰＥＷ信号はＣＰＵ１３に送られ、擬似エラー発生部１２からの書込みが終了するまでＣＰＵ１３からメモリへのアクセスを制限する。
【００２３】
擬似エラー発生部１２の動作は、ＰＭＭＳ(擬似メインメモリセレクト)信号、あるいは、ＰＣＭＳ（擬似キャッシュメモリセレクト）信号で指定されるメモリの読み出しから始まる。アドレス信号（ＰＡＤＤ）で指定されたアドレスの内容を読み出し、擬似エラー発生部１２へ送る。メインメモリへのアクセスなら、この例の場合、ＥＣＣのチェックビット（冗長ビット）もＥＣＣ検査部１８を通さずに擬似エラー発生部１２へ読み出される。ＳＥＣ／ＤＥＤの方式なら、読み出されたデータの内どこか１ビットあるいは２ビットのデータが反転され、全体のデータとして同一のアドレスのメモリへ書き戻される。
【００２４】
このアドレスについてＣＰＵ１３が読み出しを実行することで２ｂｉｔあるいは１ｂｉｔのエラーが発生する。
擬似エラー発生部１２からのキャッシュへのアクセス場合、この例では、タグ部のデータやパリティビットも含むデータがＲｄａｔａＰＣが擬似エラー発生部へ読み込まれ、読み込まれたデータの１ｂｉｔが反転されてキャッシュメモリの同一アドレスに書き戻される。
このアドレスについてＣＰＵ１３が読み出しを実行することでパリティエラーが発生する。
【００２５】
図２は、擬似エラー発生部の構成図である。
制御レジスタ３０は、メモリ選択部３１、エラー発生間隔部３２、多ビットエラー制御部３３からなる。
【００２６】
メモリ選択部３１では、メインメモリとキャッシュメモリのいずれを選択するかをビットの値で示すようになっている。図２の例では、メインメモリとキャッシュメモリ２種を対象とした例となっているが、キャッシュメモリがＬ１キャッシュとＬ２キャッシュとに分かれている場合や、メインメモリが２個以上ある場合も、ビット数が増えるだけで同様である。この信号は、デコーダ４９によりデコードされ記憶部選択Ｒ／Ｗ制御部３４に送られる。記憶部選択Ｒ／Ｗ制御部３４は、ＣＰＵがメインメモリあるいはキャッシュメモリへアクセス中でないことを表すＣＰＵ-Acc信号がアクティブでないことを確認し、メモリ選択部３１のビットをデコーダ４９でデコードすると共に、メインメモリ選択信号ＰＭＭＳあるいはキャッシュメモリ選択信号ＰＣＭＳ、及び読み出し書込み信号ＰＲ／Ｗを発生する。また、ＣＰＵ１３へ、擬似エラー発生部１２がメインメモリあるいはキャッシュメモリをアクセス中であることを示すＰＥＷ信号をアサートする。このＰＥＷ信号はマルチプレクサＭＰＸ１７の制御信号ともなる。
【００２７】
エラー発生間隔部３２の保持する値は、どのような時間的間隔でメモリ対しデータの反転を起こさせるかを決める。注意されたいのは、データ反転を起こさせてもそのアドレスをＣＰＵが読み出さなければエラーが発生したとはＣＰＵは認識しないことである。
【００２８】
実環境でも同一だが、つまり、データ反転を起こしたアドレスを読み出すかどうかは、システムの構成やアプリケーションによって大きく変化する。どの様な値を設定するか後述する。
【００２９】
n進カウンタ３５は、クロック３６の入力に従ってカウントアップし、エラー発生間隔部３２に格納されている値とカウント値が一致したとき、メモリデータ反転のためのトリガ信号を発し、カウンタ自身の値をクリアする。トリガ信号は乱数発生器３７を起動し、乱数発生器３７の生成する乱数の値を更新する。またトリガ信号は記憶部選択Ｒ／Ｗ制御部３４へも送られ、メインメモリあるいはキャッシュメモリへのＰＭＭＳ、ＰＣＭＳ、ＰＲ／Ｗ、ＰＥＷの各信号を出力させる。
【００３０】
多ビットエラー制御部３３は、対象となるメモリシステムのエラー訂正検出機能に応じて設定される。１あるいは２ビットのエラーしか発生させない場合には、多ビットエラー制御部３３は２ビットであり、多ビットエラーの発生の仕方を指示する。例えば、“００”なら多ビットエラーなし、“０１”のときは多ビットエラー制御部３３にしたがって決定された１ビットと多ビットエラー（図２では、２ビットエラー）の率で多ビットエラーを発生させる、“１０”のときは常時多ビットエラー発生となる。“０１”のときの、多ビットエラーが発生される、ある決まった率は、予め所定の値が設定される。
【００３１】
１ビットエラーと多ビットエラーの比率は、多ビットエラー発生比率制御部３８で決定される。具体的には要求される比率がn対1の場合（１ビットエラーがｎ回につき１回多ビットエラーを発生させる場合）、多ビットエラー発生比率制御部３８は、後述するように、ｎ進カウンタとなるように設定される。そして、カウンタ値にキャリーが発生するときのみ擬似的に多ビットエラーを発生させるべく、同一のアドレスに対し多ビットのデータ反転の書き込みを行う、キャリーが発生しないカウントアップの場合は擬似的な１ビットエラーを発生させるべく、１ビットのみのデータ反転の書き込みを行う。図２の例では、多ビットエラーは、２ビットエラーである。
【００３２】
乱数発生器３７のアドレス部３９は、対象とするメモリの容量や対象とするデータが配置されているアドレス位置に対応し、その最小値及び最大値を設定することができる(後述)。アドレス部３９の出力は、アドレス生成部４３で処理された後、メモリ選択部３１で選択されたメモリへＭＰＸ１７（図１参照）を通して、データ反転を起こさせるべきアドレスＰＡＤＤとして送られ、所望するメモリのアドレスにアクセスする。
【００３３】
またビット選択部４０は、１ビット以上のビット位置選択部があり、１ワード内のどのビットを反転させるかを指定するのに使われる。すなわち、１つ目のビット位置で１ビットの擬似エラーが発生すべきビット位置を指定する。複数のビット選択部を備える場合には、ビット選択部のビット数だけのビットに擬似エラーを発生させることができる。ビット選択部の各ビット位置発生部は独立に動作し、独立に乱数を発生して、擬似エラーが発生すべきビット位置を指定する。また、ビット選択部４０は、対象とするメモリのビット幅に応じて、その最大値及び最小値を設定することができる。
【００３４】
これらアドレス信号と、キャッシュメモリかメインメモリのいずれかを選択する選択信号と、Ｒ／Ｗ信号によりメモリ（図２ではメインメモリかキャッシュメモリ）への読み出しが行われ、読み出したデータはマルチプレクサＭＰＸ２０あるいはＭＰＸ２１（図１参照）を通して、ＰＤＡＴＡ−Ｉｎとしてリードデータレジスタ４１へ蓄えられ、排他的論理和回路４２の入力となる。この読み出しの時、メモリの冗長部（ＥＣＣ部やパリティビット）も直接リードデータレジスタ４１に読み込まれる。また、キャッシュメモリの場合は、そのタグメモリ部分もこのリードデータレジスタ４１に読み込まれる。
【００３５】
排他的論理和回路４２の他の入力は、乱数発生器３７のビット選択部４０の出力をデコーダ４４でデコードし、１ワード内のどこか１ビットのみが“１”であるビット列から構成されるデータとなる。多ビットエラーの発生が可能な場合は、１ワード内のどこか２以上のビット（図２では、２ビット）が“１”であることもある。メモリより読み出されたデータと、このデータでの排他的論理和がとられることで、メモリより読み出されたデータの内の１ビットあるいは２以上のビット(図２では、２ビット)が反転される。このデータがメインメモリあるいはキャッシュメモリに書き戻される。図２の２ビットエラーの場合には、ビット選択部４０の２つ目のビットのビット選択信号をデコーダ４５でデコードし、ビット列の中で反転すべきビットの位置のみが“１”となったビット列を生成する。多ビットエラー発生比率制御部３８からは、多ビットエラーを生成する場合、デコーダ４５の出力は論理積がＡＮＤ列４６で取られるが、ＡＮＤ４６のもう片方の入力、つまり多ｂｉｔエラー発生比率制御３８の出力は“１”となりＡＮＤ列４６の出力のどこかが“１”になる。多ビットエラーを生成しない場合には、多ｂｉｔエラー発生比率制御３８の出力は“０”となりＡＮＤ列４６の出力は全て“０”となる。この多ビットエラー発生比率制御部３８の出力とデコーダ４５からの出力との論理積をＡＮＤ列４６でとり、多ビットエラーを発生する場合には、２ビット目のビット位置が“１”となったビット列が出力される。多ビットエラーを発生しない場合には、全て“０”のビット列が出力される。論理和回路４７で、１ビット目の位置を示すデコーダ４４からのビット列と、２ビット目の位置を示すデコーダ４５からのビット列との論理和をとり、データ反転レジスタ４８に入力する。
【００３６】
メモリから読み取ったデータであるリードデータレジスタ４１のデータと、反転すべきビットのみに“１”が設定されたビット列であるデータ反転レジスタ４８のデータとの排他的論理和を排他的論理和回路４２でとることにより、メモリから読み取ったデータをビット反転したデータがＰＤＡＴＡ−Ｏｕｔとして出力される。
【００３７】
図３及び図４は、キャッシュメモリへのエラー書込みについて説明する図である。
図３は４ウェイセットアソシエイティブ構成の例である。まず通常のＣＰＵからの読み出し(キャッシュヒット)について説明する。キャッシュ構成の例として、容量３２Ｋバイト、１Ｌｉｎｅ：３２バイト、ＣＰＵアドレスを０〜３１とすると、ＣＰＵの上位アドレス(ＭＡＤＤ３１−１３)は比較器５６−１〜４の片側にそれぞれ入力されている。キャッシュライン選択アドレス(ＭＡＤＤ１２〜５)がＭＰＸ１７を通ってメモリのタグ部とＤａｔａ部とをアクセスし、読み出されたタグ部のデータが比較器５６−１〜４の他方の入力となる。比較の結果、一致すれば、それはキャッシュヒットとなり、ヒットしたＷＡＹのデータがウェイセレクト部５９により選択されＣＰＵへ送られる。
【００３８】
次に本発明による擬似エラー発生部１２によるキャッシュメモリのデータを反転させさせる動作について説明する、擬似エラー発生部１２においてキャッシュメモリ１４にエラーデータ書込みのリクエストが上がる、つまり、トリガがかかると、ＣＰＵがメモリへアクセス中で無いこと(ＣＰＵ−ＡｃｃがＬｏｗである事)を確認し、メモリへのアクセス要求信号ＰＥＷをアサートする。
【００３９】
擬似エラー発生部１２のアドレス信号ＰＡＤＤ(下位8ビット)は、マルチプレクサＭＰＸ１７を通してキャッシュメモリ１４の各ウェイに伝達し、読み出しが行われる。この時、タグ部も同時に読み出される。ＰＡＤＤの上位(この例では２ビット)は擬似エラー用ウェイセレクト部５５の選択信号に使われ、各ウェイから読み出されたデータから１つのウェイのデータを選択し、擬似エラー発生部１２へ送る。擬似エラー発生部１２は、データの１ビットあるいは２ビットを反転し、同一アドレスおよび同一ウェイへの書き戻しが実施される。
【００４０】
また、図３では、タグ部の情報もデータ部情報と同時に読み出され、選択されたウェイの情報が擬似エラー用ウェイセレクト部５５を通して、擬似エラー発生部１２へ送られる。通常、タグ部とデータ部は同一テクノロジのメモリセルで構成されるため、同様に読み出しが可能である。このように、両者を同時に読み出すようにすることで、回路の単純化、試験時間の短縮が可能になる。
【００４１】
後でＣＰＵにより当該アドレスのデータが読み出されたとき、パリティチェックのみのメモリであれば、パリティエラーの発生や、ＥＣＣ付きのメモリであれば、ＥＣＣ訂正可能エラー（１ビットエラー）や訂正不能エラー（２ビットエラー）が発生することになる。これまでの説明は２ビットエラーまで説明をしたが、多(n)ビットエラーに対するエラー訂正機能を持つものにたいしては、ｎ＋１ビットを書き換えるような方式に拡張されてももちろん良い。
【００４２】
図４は、本実施形態の動作を説明する信号図である。
最初、乱数発生器へのトリガがＡのタイミングで発生。ＣＰＵのキャッシュへのアクセス終了タイミングＢまで待って動作が始まる。擬似エラーを発生させるアドレスの値は、タイミングＤで出力されているが、ＣＰＵがキャッシュにアクセスしているので、アクセスが終わるタイミングＢまで待たされている。タイミングＢで、ＣＰＵのキャッシュへのアクセスが終了すると、次は、ＣＰＵからのキャッシュへのアクセスを禁止するＰＥＷ信号がタイミングＣで出力される。このタイミングＣの直後に、タイミングＥで、擬似エラー発生部がキャッシュにアクセスし、信号ＰＣＭＳがローになる。擬似エラー発生部は、最初、キャッシュからデータを読むので、信号ＰＲ／Ｗは、リード状態になっている。このとき、擬似エラー発生部に読み出されたデータＰＤＡＴＡ−Ｉｎが入力され、ビット反転されて、信号ＰＤＡＴＡ−Ｏｕｔが出力される。その後、擬似エラー発生部は、キャッシュに書き込みを行なう動作に入るので、タイミングＦで信号ＰＲ／Ｗがライト状態となり、信号ＰＤＡＴＡ−Ｏｕｔがキャッシュに書き込まれる。
【００４３】
図５は、図２のｎ進カウンタ３５の構成を示す図である。
カウンタ６０は、バイナリカウンタでありクロック信号の入力を受けて、“０”から順次カウントアップを行なう。カウンタ６０は、ｎ進カウンタを構成する場合、ｎよりも大きな値までカウントアップ可能なビット数ｋが用意される(２＊＊ｋ＞ｎが必要)。レジスタ６１には、ｎ−１を設定する。この値は、図２の制御レジスタ３０のエラー発生間隔部３２の値が設定される。具体的には、所望とするメモリへ反転データを書き込む時間間隔をクロックの周期で除した値となる。コンパレータ６２で、カウンタ６０がカウントアップする値とレジスタ６１の値とを比較し、一致したら、カウンタ６０にクリア信号を入力するように構成する。
【００４４】
図６は、最大値と最小値を持つ、図２の乱数発生器３７のアドレス部３９及びビット選択部４０の構成図である。
図２の乱数発生器３７のアドレス部３９とビット選択部４０は、それぞれ乱数発生回路で構成される。アドレス部３９は、ランダムに、擬似エラーを発生させるアドレスを指定し、ビット選択部４０は、ランダムに、ビット反転を行なうビット位置を指定するものである。発生するアドレス及びビット位置は対象となるメモリの容量やビット幅により、その最大値・最小値を規定するある。その例を以下に示す。
【００４５】
図６（ａ）は、乱数発生回路６５の例であり、この構成では、１〜６５５３５までの値のうちの任意の乱数を発生する。図６（ｂ）は、乱数発生回路６５から発生される乱数に、最大値と最小値を設定する構成である。最小値レジスタ（ＭＩＮ）６６には、乱数の取る最小値を設定する。最大値レジスタ（ＭＡＸ）６７には、乱数の取る最大値を設定する。乱数発生回路６５から乱数が発生されると、比較器６８は、最小値レジスタ６６の最小値と乱数を比較し、乱数のほうが小さい場合には、“１”を出力する。比較器６９は、最大値レジスタ６７の最大値と乱数を比較し、乱数のほうが大きい場合には、“１”を出力する。論理和回路７０において、比較器６８と比較器６９の出力の論理和を取る。論理和回路７０の出力が“１”の場合に、乱数発生回路６５にリトライをかけ、新たな乱数を発生させる。これは、発生された乱数が最小値より小さい、あるいは、最大値より大きい場合には、もう一回乱数を発生させるというものである。乱数の発生は、ランダムな値がランダムな順番で発生されるので、一回乱数が最大値と最小値の間を外れたとしても、次に発生される乱数は、この間に入っている可能性がある。発生された乱数が最大値と最小値の間に入るまで、リトライを繰り返す。なおこの回路例では“００００００００００００００００”が発生できない。それを改良するには−１する回路を付加することにより回避できる。
【００４６】
図７（このドキュメントの最後に添付）は、図２の多ｂｉｔエラー発生比率制御部３８の詳細図である。トリガ信号をクロックとするカウンタ８０、レジスタ８１、コンパレータ８２からｎ進カウンタを構成する。このｎの値が１ｂｉｔのデータ反転が起こる回数と２ｂｉｔのデータ反転が起こる回数の比率を示す。コンパレータからの出力が１のときかつ制御レジスタ３０の多ｂｉｔエラー制御部３３の値が０１のときは多ｂｉｔエラー発生制御部３８の出力はｎ回に１回のみ１を出力しメモリの同一アドレスに対し２ｂｉｔの反転したデータを書き込む。３３が００のときは３８はいつも０となり２ｂｉｔ反転データの書き込みは行われない。３３が１０のときは３８の出力はいつも１となって、毎回２ｂｉｔ反転データの書き込みが行われる。
【００４７】
図８は、擬似多ビットエラーとして、３ビットエラーを発生するための擬似エラー発生部の構成図である。
図８において、図２と同じ構成要素には同じ参照符号を付し、説明を省略する。
【００４８】
図８においては、ビット選択部４０ａが３つのビット選択位置を生成するようになっており、デコーダ４５ａ、論理積回路４６ａが新たに設けられている。また、制御レジスタ３０の多ビットエラー制御部３３では、例として以下のような設定が可能となっている、(1) １ｂｉｔエラーのみ、多ｂｉｔエラー発生なし、(2) １ｂｉｔエラーとある決められた率の２ビットエラーが発生、(3) 1ｂｉｔエラーと3ｂｉｔエラーが決められた率で発生、２ｂｉｔエラー発生なし、(4) １ｂｉｔエラーと２〜３ビットエラーが別個に決められた率で発生。この「ある決められた率」は、多ビットエラー発生比率制御部３８によって行われる。詳細についての説明を、図９を用いて行う。この例ではカウンタ８０Ａ、レジスタ８１Ａ、コンパレータ８２Ａでレジスタ８１Ａの内容をｎ−１に設定することでｎ進カウンタを構成している。またカウンタ８０Ｂ、レジスタ８１Ｂ、コンパレータ８２Ｂでレジスタ８１Ｂの内容をｍ−１に設定することでm進カウンタを構成しているが、カウンタ８０Ｂのクロックがコンパレータ８２Ａの出力から成っていることで、全体としてはｎ＋ｍ進カウンタとなっている。制御レジスタ３０の多ｂｉｔエラー制御部３３の２ビットが００のときは両カウンタからの出力はＡＮＤ回路で閉じられ、２ｂｉｔ、３ｂｉｔのデータ反転の書込みは起こさない１ｂｉｔのデータ反転のみとなる。３３のビットが０１のときはレジスタ８１Ａに設定された値であるｎ回に１回２ｂｉｔの反転データの書き込みが行われる３ｂｉｔのデータ反転は起きない、１ｂｉｔの反転はｎ回にｎ−１回となる。３３のビットが１０のときはｎ×ｍ回に１回３ｂｉｔの反転したデータの書き込みが行われる、ｎ×ｍ回の内ｎ×ｍ−１回は１ｂｉｔの反転データの書き込みとなる。３３のビットが１１のときはｎ×ｍ回に１回３ｂｉｔの反転したデータの書き込みが行われ、ｎ×ｍ回にｍ−１回２ｂｉｔの反転データの書き込みが行われ、１ｂｉｔの反転書込みははｎ回にｎ−１回となる。こうすることで１ｂｉｔ／２ｂｉｔ／３ｂｉｔの反転データか適当に書き込まれある確率でエラーが発生する。
【００４９】
図１０は、本実施形態が適用されるＣＰＵを複数個集積したマルチコア型情報処理装置の第一例の構成を示す図である。
ＣＰＵコアには、それぞれキャッシュが設けられている。また、ＣＰＵコアを含むノード７６−１〜７６−ｎは、相互結合網７５で結合され、外部のメインメモリ１１にアクセスするものである。本実施形態の擬似エラー発生部は各ノード７６−１〜７６−ｎにそれぞれ設けるものとする。各擬似エラー発生部は、各コア７６−１〜７６−ｎ内のキャッシュへの擬似エラーの発生を行なうのみではなく、メインメモリ１１への擬似エラーの発生を行なう。
【００５０】
図１１は、本実施形態が適用されるＣＰＵを複数個集積したマルチコア型情報処理装置の第二例の構成を示す図である。ＣＰＵコアにはそれぞれキャッシュメモリが設けられている。各ＣＰＵコア９１−１，９１−２〜９１−ｎは総合結合網９２で結線されている。本発明による擬似エラー発生部９３もこの総合結合網92に結線されている。この発明例では、1つの擬似エラー発生部９３で各ＣＰＵ内のキャッシュメモリを個別にアクセスできるようにしている。具体的には、図１２を参照する。この図は図２の１部を拡張したもので、図示されていないものは、図２と同様であると理解されたい。この実施例では図２のアドレス部３９を拡張し、その１部をデコーダ４９に入力し、各キャッシュの選択信号となるよう図１２内の表に示すようにデコードする。各キャッシュメモリ選択信号ＰＣＭＳ０〜ＰＣＭＳｎ−１はそれぞれ、各ＣＰＵコア内のキャッシュを個別に選択する信号となる。他の信号ＰＲ／Ｗ,ＰＥＷは各キャッシュに共通に入力され、ＰＭＭＳはメインメモリの選択信号となる。このようにすることで、各ＣＰＵコア内のキャッシュのデータをランダムに反転させることがでる。
【００５１】
なお、上記の本実施形態はソフウェアで代行することもできる。例えば、カウンタは、定期的に発生するインタラプト信号とし、乱数発生、及びその結果により、どのメモリのアドレス／ビット位置に擬似エラーを発生させるか決定する等である。
【００５２】
また、メモリは、通常の読み出し／書込みを行う時の動作モード（Ａｃｔ−Ｍｏｄｅ）に加え、書き込まれたデータを保持のみしている状態（Ｄｒｅｔ−Ｍｏｄｅ）で、ソフトエラー率が大きく違う場合がある。本実施形態では、この動作モードの違いによるソフトエラー率の変動を吸収するため、擬似エラー発生部の擬似エラー発生間隔レジスタを複数用意し、動作モードに対応し擬似エラー発生間隔を変更できるようにすることも可能である。
【００５３】
上記実施形態の説明では、メインメモリ、キャッシュメモリと２種のメモリが存在する場合、別個に試験するために、制御レジスタの対象メモリ選択部をどちらかに設定して実施する例であった。しかし、実際の環境では、両メモリにばらばらにエラーは発生する、そこで、本実施形態の擬似エラー発生部を複数用意し、１つはメインメモリ用、もう一つはキャッシュメモリ用と設定して試験を行うことで、より実環境に近づけ付けで試験することも可能である。
【００５４】
以下に、実際の装置におけるエラー発生率を、どう予測するかについて述べる。
メインメモリは通常ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）が使用され、加速した環境下に置く、つまり、ＤＲＡＭ素子単体にα線や中性子線を強制的に照射する。その時のエラー発生率（単位時間当たりのエラー発生件数）：Ａと、加速係数（通常状態でのα線・中性子線の線量に対する加速環境下の線量の比）：Ｂとから、Ａ／Ｂが実際の環境下でのエラー発生率になると思われるが、この値は装置の実動作条件が反映されていない。なぜなら、エラー発生率Aは試験用のプログラムを用いて測定されるが、この試験プログラムはメモリの全アドレスへデータ“１”を書き込み、一定時間後全アドレスに対し“１”を読み出す。次に全アドレスへデータ“０”を書き込み、一定時間後全アドレスに対し“０”を読み出す。これを繰り返すといった試験である。これに対し、実際は、全アドレスを有効に使用することは稀であるし、書込んだデータを読み出さない場合も多々ある。よってＡ／Ｂを装置の予想エラー率にすることは問題である。
【００５５】
キャッシュメモリについては、通常キャッシュメモリと同一プロセスで作成されたメモリチップを用いて、前述したメインメモリと同様な方法でエラー率を予測するが、この予想値も実際の装置環境での値として用いるには問題がある。例えば、データキャッシュは、動作モードがライトバックかライトスルーかで動作が大きく異なる。なぜならライトバックではＣＰＵが書き込んだデータをキャッシュのミスヒットの発生に伴い、不特定な時間後メインメモリに戻すという動作が発生し、この時キャッシュの読み出し動作が生じ、もしこの時当該アドレスの内容の1部が反転していればエラーが発生する。しかし、ライトスルーでは、キャッシュへの書込みと同時に同一内容をメインメモリに書き込むため、このようなキャッシュのミスヒット時のキャッシュの読み出し動作は生じない。したがって、もしキャッシュの当該アドレスの内容が反転していたとしてもエラーとはならない。つまり見かけ上のエラー率はライトスルーの方が低くなる。
【００５６】
以上のことを鑑み、メモリ単体のエラー率Ａ／Ｂをメモリの情報が反転する確率と定義し、Ａ／Ｂに対しある一定の値Ｄ：（１０００〜１００，０００）をかけた値Ａ×Ｄ／Ｂを制御レジスタのエラー発生間隔として設定する。制御レジスタのエラー発生間隔としては、１分〜１時間程度とする。これと、Ａ／Ｂの値から、おおよそＤの値がどの程度かが決定できる。そして、本実施形態の擬似エラー発生部を用いて、実際の装置環境、プロセッサーの動作条件などを、プログラムを含め実動作と同じくしてエラーの発生を観測し、エラー発生時の処理ルーチンが正しく動作するか等の評価を行う。また、この時のエラー率を値Ｄで除することで実際の装置としてのエラー率（Ｅ）を予測することができる。この値（Ｅ）が装置として所望するエラー率以下であれば問題ないが、もし所望するエラー率以上であれば何らかの対策が必要となる。
【００５７】
対策としては、上記実施形態では、最初からメインメモリにＥＣＣ付きのものを例示したが、ＥＣＣなしだったものを、ＥＣＣ付きにするといった方法がある。
また、キャッシュについては、その書き込み方式として、ライトバック方式とライトスルー方式があり、性能はライトバックの方が良いが、ソフトエラーに対してはライトスルーの方が強いということが言える。理由は、ライトバックは、書いた内容をメインメモリへ書き戻すタイミングが、長時間が経過した後であることが多々あり、その経過時間の間に内容の反転が生じ、書き戻す時にソフトエラーとして顕在化するためである。これに対しライトスルーでは、直ぐにメインメモリに書き戻してしてしまうため、長時間経過した内容を読み出す動作が少なくなるため、ソフトエラー率は低く見える。よって、キャッシュの性能を少し犠牲にして、信頼性を上げるためにキャッシュの方式をライトスルーにすることは有効である。
【００５８】
以上の本実施形態では、α線や宇宙線（中性子線）によるソフトエラーと同じ現象を再現することで、通常非常にまれに発生するソフトエラー現象を加速して発生させ、装置としてソフトエラー発生時の処理ルーチンが正確に動作するか否かの確認ができる。また、装置としてのエラー発生率を予測できることで、何らかの対策が必要であるかの確認ができる。
【符号の説明】
【００５９】
１０      半導体の１チップ
１１      メインメモリ
１２      擬似エラー発生部
１３      ＣＰＵ
１４      キャッシュメモリ
１５      ＥＣＣ生成回路
１６      パリティ生成回路
１７、２０、２１      マルチプレクサ
１８      ＥＣＣ検査部
１９      パリティ検査部
２２      トライステートバッファ
２３      エラー信号線
３０      制御レジスタ
３１      メモリ選択部
３２      エラー発生間隔部
３３      多ビットエラー制御部
３５      カウンタ
３６      クロック
３７      乱数発生器
３８      多ビットエラー発生率制御部
３９      アドレス部
４０、４０ａ      ビット選択部
４１      リードデータレジスタ
４２      排他的論理和回路
４３      アドレス生成部
４４、４５、４５ａ、４９      デコーダ
４６、４６ａ      論理積回路
４７      論理和回路
４８      データ反転レジスタ
５５      擬似エラー用ウェイセレクト部
５６−１〜５６−４      比較器
５７      論理和回路
５８      マルチプレクサ
５９      ウェイセレクト部
６０、８０，８０Ａ、８０Ｂ      カウンタ
６１、８１，８１Ａ、８１Ｂ      レジスタ
６２、８２，８２Ａ、８２Ｂ      コンパレータ
６５      乱数発生回路
６６      最小値レジスタ
６７      最大値レジスタ
６８、６９      比較器
７０      論理和回路
７５      相互結合網
７６−１〜７６−ｎ      ノード
９1−１〜９１−ｎ      ＣＰＵコア、キャッシュ含む
９２      総合結合網
９３      擬似エラー発生部
９４      メモリコントローラ
９５      外部メモリ
【図１】
2012073678.tif 000003
【図２】
2012073678.tif 000004
【図３】
2012073678.tif 000005
【図４】
2012073678.tif 000006
【図５】
2012073678.tif 000007
【図６】
2012073678.tif 000008
【図７】
2012073678.tif 000009
【図８】
2012073678.tif 000010
【図９】
2012073678.tif 000011
【図１０】
2012073678.tif 000012
【図１１】
2012073678.tif 000013
【図１２】
2012073678.tif 000014