"重複しないランダムパターンを生成するランダムパターン生成手段と、前記ランダムパターンに演算を施す演算手段と、前記ランダムパターンから一意に特定されるアドレスに、前記演算手段が前記ランダムパターンに演算を施した際の期待値を記憶した期待値記憶手段と、前記演算手段の演算結果と、前記期待値記憶手段から読み出された期待値を比較する比較手段と、を有する情報処理装置。重複しないランダムパターンを生成するランダムパターン生成手段と、前記ランダムパターンの検査パターン部に演算を施す演算手段と、前記演算手段による演算結果と、前記ランダムパターンの演算結果部との比較結果の期待値を、前記ランダムパターンから一意に特定されるアドレスに記憶した期待値記憶手段と、前記演算手段の演算結果と、前記演算結果部を比較して第1の比較結果を出力する第1の比較手段と、前記第1の比較結果と、前記期待値記憶手段から読み出された期待値を比較する第2の比較手段と、を有する情報処理装置。前記ランダムパターン生成手段は全てのビットがゼロのオールゼロパターン以外の全ての前記ランダムパターンを生成するランダムパターン生成手段であり、前記ランダムパターンが特定のビットパターンになった場合に、オールゼロパターンを前記演算手段に演算させるゼロパターン挿入手段、を有し、前記比較手段は、オールゼロパターンにより一意に特定されるアドレスから読み出した、オールゼロパターンに演算を施した際の期待値と、前記演算手段によるオールゼロパターンの演算結果とを比較する、ことを特徴とする請求項1又は2記載の情報処理装置。前記ランダムパターン生成器が最後に生成した前記ランダムパターンを記憶するランダムパターン記憶手段を有し、前記ランダムパターン記憶手段のランダムパターンの次のランダムパターンから生成を再開させるランダムパターン制御手段と、を有する請求項1~3いずれか1項記載の情報処理装置。前記期待値記憶手段には、前記演算手段が備える演算回路毎に期待値が記憶されており、前記比較手段は、前記演算手段による演算回路毎の演算結果と、前記期待値記憶手段から読み出された演算回路毎の期待値を比較する、ことを特徴とする請求項1、3,4いずれか1項記載の情報処理装置。前記期待値記憶手段には、前記演算手段が前記ランダムパターンに第1の演算回路で演算を施した演算結果に、さらに前記演算手段が第2の演算回路で演算を施した演算結果が記憶されており、前記比較手段は、前記演算手段による第1の演算回路の演算の後の第2の演算回路の演算結果と、前記期待値記憶手段から読み出された期待値を比較する、ことを特徴とする請求項1,3,4いずれか1項記載の情報処理装置。前記期待値記憶手段には、前記演算手段による演算結果と、前記演算結果部とのビット毎の比較結果の期待値が、前記ランダムパターンから一意に特定されるアドレスに記憶されており、前記第1の比較手段は、前記演算手段の演算結果と、前記演算結果部をビット毎に比較して第1の比較結果を出力し、前記第2の比較手段は、ビット毎の第1の比較結果が、前記期待値記憶手段から読み出された期待値と一致するか否かを比較する、ことを特徴とする請求項2記載の情報処理装置。データに演算を施す演算手段の故障を検出する故障検出装置であって、重複しないランダムパターンを生成するランダムパターン生成手段と、前記演算手段に前記ランダムパターンの演算を実行させる制御手段と、前記演算手段の演算結果と、前記ランダムパターンから一意に特定されるアドレスに、前記演算手段が前記ランダムパターンに演算を施した際の期待値を記憶した期待値記憶手段から期待値を比較する比較手段と、を有する故障検出装置。情報処理装置の故障を検出する故障検出方法であって、重複しないランダムパターンを生成するランダムパターン生成ステップと、前記ランダムパターンに演算を施す演算ステップと、前記ランダムパターンから一意に特定されるアドレスに、前記演算手段が前記ランダムパターンに演算を施した際の期待値を記憶した期待値記憶手段から期待を読み出すステップと、前記演算手段の演算結果と、前記期待値記憶手段から読み出された期待値を比較する比較ステップと、を有する故障検出方法。しかしながら、近年のCPUは高集積化が進み回路や素子を網羅するためには検査パターンの種類が多くなる傾向にあり、テストパターン及び期待値パターンの記憶容量が増大してしまうという問題がある。車載されるマイコンでは記憶手段の容量にも制約が生じやすく、全てのテストパターン及び期待値パターンを記憶することが合理的でなくなりつつある。図1は、テストパターン及び期待値パターンの記憶容量について説明する図の一例である。図はマイコンに搭載されたROMに記憶されるデータ例を示す。ROMには車両制御などのためのメインプログラムの他、検査パターン毎に期待値が対応づけて記憶されている。なお、検査パターンが例えば16ビット、期待値が例えば8ビットなのは、検査パターンに2つのオペランドが含まれるためである。期待値そのものを検査パターンと対応づけておかずに、検査パターンに期待値の記憶先アドレスを対応づければ、期待値を別の記憶手段に配置することもできるが、記憶先アドレスが必要になるので結局は同程度の記憶容量を必要としてしまう。また、記憶先アドレスでなく、検査パターンから期待値の記憶アドレスを生成するハード的なアドレスコンローラを配置すれば、記憶先アドレスが不要になるので記憶容量を削減できる可能性があるが、アドレスコンローラの分コスト増が生じてしまう。本発明は、上記課題に鑑み、CPUの故障率を検出するためのデータをより少ない記憶容量で記憶可能な情報処理装置を提供することを目的とする。本発明は、重複しないランダムパターンを生成するランダムパターン生成手段と、前記ランダムパターンに演算を施す演算手段と、前記ランダムパターンから一意に特定されるアドレスに、前記演算手段が前記ランダムパターンに演算を施した際の期待値を記憶した期待値記憶手段と、前記演算手段の演算結果と、前記期待値記憶手段から読み出された期待値を比較する比較手段とを有する。CPUの故障率を検出するためのデータをより少ない記憶容量で記憶可能な情報処理装置を提供することができる。以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。図2は、情報処理装置の特徴部を概略的に説明する図の一例である。図示するように、疑似ランダムパターン生成器11に検査対象ALU12が接続されている。また、疑似ランダムパターン生成器11は加算器14に接続されている。また、ROM13と検査対象ALU12が排他的論理和回路EX-OR回路15に接続されている。ROM13にはメインプログラム、期待値、及び、アドレスオフセット値が記憶されている。図示するように疑似ランダムパターンがROM13に記憶されていない点が特徴の1つである。1疑似ランダムパターン生成器11は、検査パターンを生成して検査対象ALU12に、期待値アドレスを加算器14にそれぞれ出力する。検査パターンと期待値アドレスは同じビットパターンである。2検査対象ALU12は検査パターンに加算や乗算などの演算を施し排他的論理和回路15に出力する。3加算器14は、ROM13に記憶されたアドレスオフセット値に期待値アドレスを加算して読み出しアドレスを算出する。4読み出しアドレスは不図示のデータバスに出力され、ROM13の読み出しアドレスから期待値が読み出され、排他的論理和回路15に出力される。読み出しアドレスは一意なので、重複しない1つの期待値を特定できる。このため、ROM13の読み出しアドレス=アドレスオフセット値期待値アドレスに期待値のみを記憶しているだけで、検査パターンと期待値の紐付けが不要になりROM13の記憶容量を節約できる。5検査対象ALU12に故障がなければ排他的論理和回路15は、検査対象ALU12の演算結果と期待値が等しいという比較結果を出力する。以上のような検査装置によれば、以下の作用効果が得られる。疑似ランダムパターン生成器11がALLゼロを除く全ての検査パターンを生成するので、ALLゼロさえ検査パターンに加えれば、故障検出率を100とすることができる。アドレスオフセット値を基準に、検査パターンにより一意に定まる読み出しアドレスに期待値を記憶するので、記憶容量を低減できる。また、期待値と検査パターンを対応づけて記憶したり、期待値と検査パターンを対応づける仕組みが不要になる。疑似ランダムパターン生成器図3は、疑似ランダムパターン生成器11を説明する図の一例である。疑似ランダムパターン生成器11は、例えばLFSRlinearfeedbackshiftregisterにより構成される。図示するようにLFSRはFFフリップフロップを直列に接続し、FF1とFF4の値の排他的論理和を取りFF1にフィードバックする。FF2~FF4には1サイクル前のFF1~FF3の値が記憶される。図3bはサイクル毎のFF1~FF4の値を示す図の一例である。例えば、FF1~FF4の値が{1,1,1,1}であった場合、FF1=1とFF4=1の排他的論理和が0なので、次のサイクルではFF1だけがゼロになり、FF2~FF4には1が記憶される。{0,1,1,1}であった場合、FF1=0とFF4=1の排他的論理和が1なので、次のサイクルではFF1は1になり、FF2~FF4には0,1,1がそれぞれ記憶される。このような演算を繰り返すと、LSFRは1周期の間に重複しない4ビットのビットパターンを一度だけ生成する。図示するように4個のFFを有するLSFRでは15サイクルで1周期である。1周期のサイクル数は2^FFの個数-1である。LSFRにはALLゼロを出力する機能がなく、仮にFF1~4にゼロを設定すると、以降のサイクルでは常にFF1~4がゼロになってしまう。このため、本実施形態の情報処理装置100は意図的に検査パターンにALLゼロを挿入する。なお、疑似ランダムパターン生成器11はLFSRに限られず、CACellularautomatonなどによっても実現できる。本実施例では、ハード的に検査する情報処理装置100について説明する。図4は、情報処理装置100のハードウェア構成図の一例を示す。この情報処理装置100は、例えば車両のECUElectronicControlUnitに搭載されるマイコンである。ECUにはエンジンECU、HVハイブリッド-ECU、ブレーキECU、ゲートウェイECUなど、種々のものがあるがどのようなECUに搭載されてもよい。また、複数のECUの機能が統合された統合ECUに搭載されてもよい。情報処理装置100は、データバス36に接続された、RAM22、I/O23、タイマ24、INTC25、DMAC26、CPU21、及び、検査回路200を有する。なお、CPU21と検査回路200はデータバス37を介してROM13とも接続されている。CPU21は、データバス36に接続された2つのレジスタセット34,35、2つのレジスタセット34,35に接続されたALU20、データバス37と接続されたプログラムカウンタ31と命令キュー32、命令キュー32と接続された命令デコーダ33、とを有する。一方のレジスタセット34には、RAMに記憶されているデータやI/Oに入力されたセンサの検出値等が、データバス36を介して読み出される。他方のレジスタセット35には、ALU20の演算結果が記憶される。レジスタセット34,35は、複数のレジスタの集合である。プログラムカウンタ31にはCPU21が実行するROM13のアドレスが記憶される。プログラムカウンタ31がアドレスをデータバス37に出力すると、そのアドレスの命令が命令キュー32に読み出される。プログラムカウンタ31は、1つの命令が読み出される毎に、記憶しているアドレスの値を大きくして次の命令の読み出しに備える。なお、分岐命令が読み出されたような場合、プログラムカウンタ31には分岐先のアドレスがセットされる。命令キュー32は、FIFOFirstIn,FirstOut型の記憶手段で、複数の命令例えば、5~20程度を保持させておくことができる。命令キュー32には実行順に命令が読み込まれる。命令デコーダ33は、命令キュー32の命令をデコードしてCPU21の各回路や周辺の回路に接続されている制御線に信号を出力する。例えばALU20にはデコード結果に応じて加算、乗算、減算、シフト、除算等が指示される。また、デコードにより命令が演算対象とするオペランドが特定されるので、ALU20にはデコード結果に応じてレジスタセット34,35からデータが入力される。ALU20は、レジスタセット34,35から入力されたデータに各種の演算を施す。演算結果は、レジスタセット35にライトバックされ、再度、演算の対象となったり、RAMに書き込まれる。また、本実施例ではALU20の検査時に、ALU20の演算結果が検査回路200に出力される。検査回路200は、ROM13から複写されたアドレスオフセット値、疑似ランダムパターン生成器11、制御部16、排他的論理和回路15、監視回路19、加算器14及び結果記憶部18を有する。アドレスオフセット値はROM13に記憶されているが、例えば、情報処理装置100の起動時の初期処理としてROM13から検査回路200のレジスタに読み出されている。疑似ランダムパターン生成器11については上述したとおりである。制御部16は、検査の開始、再開などの検査手順を制御する。制御部16は、例えばCPU21の負荷を監視して、疑似ランダムパターン生成器11に検査パターンを生成させたり、停止させたり、再開時の検査パターンを指示する。加算器14は、アドレスオフセット値と疑似ランダムパターン生成器11が生成した期待値アドレスを加算して、DMAC26にROM13からの期待値の読み出しを依頼する。すなわち、加算器14は加算結果読み出しアドレスと期待値の読み出し先制御部又は検査回路の排他的論理和回路をDMAC26のレジスタに設定する。DMAC26はCPU21を介さずにROM13から読み出しアドレスの期待値を読み出し、検査回路200の制御部16に入力する。制御部はこの期待値を排他的論理和回路15に出力する。また、制御部16は、疑似ランダムパターン生成器11が生成した検査パターンをALU20に実行させる。実行させる方法としてハード的には以下のような方法がある。メインプログラムの命令と同様にALU20に実行させる方法制御部16は、疑似ランダムパターン生成器11が生成した検査パターンをデータバス37を介して命令キュー32に設定する。この時、制御部16は検査パターンにオペコードを追加する。オペコードにより各演算を指定できる。演算の種類はALU20が同一なら固定なので、例えば3~5種類のオペランドを1つの検査パターンに追加する。したがって、1つの検査パターンに対し3~5個の命令が命令キュー32に設定される。ALU20に直接オペランドを入力する方法ALU20にもよるが演算回路が異なるとALU20は同時並行的に演算を実行できる。制御部16は1つの検査パターンを分配器で加算回路、乗算回路などに分岐してALU20に入力することで、各演算の演算結果を短時間に得ることができる。ALU20が同時並行的に演算を実行できない場合、制御部16はALU20に各演算種類を指示するための制御信号を出力し、ALU20の検査パターンの第1オペランドと第2オペランドを入力する。これを加算、乗算などの演算種類ごとに繰り返す。また、制御部16は期待値から演算種類に応じた部分のみ何バイト目、上位何ビット、下位何ビット等を取り出して排他的論理和回路15の一方に入力する。期待値については後述する。排他的論理和回路15の他方の入力はALU20と接続されており、ALU20の演算結果とデータバス37から読み出された期待値が一致するか否かを比較する。排他的論理和回路15の出力は反転されるためこのような回路を一致回路という場合がある、排他的論理和回路15の出力は一致すれば1、一致しなければ0となる。例えば、期待値が8ビットであればビット単位で比較して1ビットでも一致しなければ、一致しないと判定する。監視回路19は、排他的論理和の判定結果が一致しないという判定結果の場合、加算器14の内容を結果記憶部18に記憶させる。結果記憶部18は、電力供給をオフしてもデータが消えない不揮発メモリである。これにより、演算結果が一致しなかった検査パターンを特定することができる。また、結果記憶部18には、検査パターンの初期値、及び、制御部16により記憶された、最後の検査パターンが記憶されている。結果記憶部18は、電源オフ後も記憶内容を保持するので、再起動後もLFSRは前回保持したLFSRの最後の検査パターン1から開始することが可能である。これにより、一連の検査パターンが長い場合など、検査に割り当てられた時間内に検査が一巡せずパターンの後半の検査がいつまでも実行されなくなることを防ぐことができる。制御部は、疑似ランダムパターン生成器11が生成する検査パターンを監視し、特定のビットパターンになると、疑似ランダムパターン生成器11を停止させ、ゼロ設定部17に全てのビットがゼロの検査パターン=ALLゼロの検査パターンを生成させる。制御部は、ALLゼロの検査パターンを他の検査パターンと同様にALU20に実行させる。なお、DMAC26は、I/Oからの要求によりI/OからRAMへ、CPU21からの要求によりRAMからI/Oへ、CPU21を介することなくデータを転送する。また、本実施例では、ROM13から検査回路200に期待値を読み出す。INTC25は、タイマや周辺回路からの割り込みを受付、優先順位にしたがってCPU21に割り込みを許可する割り込みコントローラである。例えば、サイクル時間毎に処理したいプログラムがある場合、プログラムがタイマに設定した時間毎にINTC25に割り込み要求が入り、INTC25の調停後、CPU21はプログラムを実行することができる。なお、I/O24には、センサの信号をA/D変換するA/D変換器、他のマイコンと通信するための通信装置、アクチュエータ等が接続されている。図5は、検査回路200の動作を模式的に説明する図の一例である。ここではALU20は8ビットの演算器であるとする。疑似ランダムパターン生成器11は、第1オペランド~第nオペランドを1セットに生成するので、重複しない8×オペランド数のビット数の全てのゼロを除く検査パターンを生成する。以下ではオペランド数は2つであるとする。よって、この場合のLFSRのFFは16個である。図の例では、1番上にゼロ設定部17が設定したALLゼロの検査パターンが図示されている。その下の、0000000100000001、1100001000001010、が疑似ランダムパターン生成器11が生成した検査パターンである。検査パターンは昇順や降順であるとは限らないが、同じサイクルでは例えば、図3bのシーケンシャルナンバが同じなら同じ検査パターンを生成するので、図の例では一番最後のパターンの次が、ALLゼロの検査パターンになっている。そして、ROM13には検査パターンが記憶されておらず期待値のみが記憶されている。しかし、ROM13には制御用のメインプログラムなどが記憶されているので、期待値はメインプログラムを阻害しないROM13の所定のアドレスに記憶されている。したがって、単に期待値アドレス=検査パターンを読み出しアドレスとしても、検査回路200は期待値を読み出すことができない。そこで、ROM13には、期待値の記憶アドレスを特定するためのアドレスオフセット値が記憶されている。図6はアドレスオフセット値を説明するための図の一例である。図ではROMに記憶されているはずのアドレスオフセット値を省略している。例えば、メインプログラムをROM13の先頭アドレスから記憶したとすると、期待値はメインプログラムの最後のアドレス以降メインプログラムに続いて、又は、ブランクや他のデータに続いてに連続して記憶される。アドレスオフセット値は、このようにして記憶されている期待値の先頭アドレスを示す。図5ではアドレスオフセット値をA000としている。したがって、アドレスA000に続いて2161個の期待値が記憶されている。各期待値の記憶アドレスは、検査パターンに対応して定まる。例えば、図5の例では検査パターンが0000000100000001の期待値は、A101に記憶されるが、アドレスA101は0000000100000001A000と一致している。すなわち、オフセットアドレスA000に0000000100000001を加えたアドレスがA101である。このように期待値をアドレスオフセット値検査パターン期待値アドレスの読み出しアドレスに記憶しておくことで、検査パターンから期待値の読み出しアドレスを一意に特定することができる。ここで、検査パターンが同じでも、ALU20における演算種類が異なれば演算結果も異なることが一般的と考えられる。このため、期待値は、1つの検査パターンに対し、加算器用、減算器用、乗算器用、除算器用、論理演算用、シフト用などの演算種類に応じて用意されている。なお、乗算はシフトと加算を組み合わせて、除算はシフト、加算及び減算を組み合わせて実行されるので、乗算器や除算器そのものを有していない場合がある。よって、乗算器用や除算器用とはこの演算を行った場合という意味である。例えば、検査パターンが0000000100000001の場合、加算結果は00000010であるが、乗算結果は0000000000000001である。図5では、加算器用の期待値、...、乗算器用の期待値がROM13に図示されている。加算器用や減算器用の期待値は8ビットであり、乗算器用の期待値は16ビットになる。一般に、情報処理装置100はバイト単位又はワード単位2バイト以上でメモリにアクセスするので、1つのアドレスに全ての期待値が格納されない場合がある。このため、実際には、複数のアドレスに跨って1つの検査パターンに対する全ての演算種類用の期待値が記憶されている。例えば、バイト単位でアクセスする情報処理装置100において、1つの検査パターンに対する期待値が4バイト必要であれば、検査パターン=期待値アドレスから4バイト分が1つの1つの検査パターンに対する期待値である。このようにROM13に期待値が記憶されると、単に加算器14が期待値アドレスアドレスオフセット値を算出しても、情報処理装置100が検査パターンに対する期待値にアクセスできないので、加算器14は期待値アドレスアドレスオフセット値インクリメント値のように読み出しアドレスの算出方法を調整する例えば、4バイト分が1つの検査パターンの期待値の場合、インクリメント値を4にする。こうすることで、期待値アドレスにより、一意に全ての演算種類の期待値を特定できる。上記のように制御部16は、疑似ランダムパターン生成器11が生成する検査パターンが特定のビットパターンになると、ALU20に全てのビットがゼロの検査パターンをオペランドとして実行させる。このため、ROM13にはALLゼロの検査パターンに対応した期待値も記憶されている。このようにALLゼロの検査パターンを挿入し、期待値を用意しておくことで故障検出率を100にすることができる。また、期待値には演算結果だけでなく、ステータスレジスタのフラグ状態を追加しておくとさらに有効である。ステータスレジスタにはキャリーフラグけた上がり、ボローフラグけた下げ、コンペアフラグ、ネガティブフラグ、ゼロフラグなどが記憶されている。これらのフラグの期待値と演算結果を比較することで故障の検出率が向上する。なお、検査回路200が検査を開始するタイミングは、例えば、IGオンの直後の、CPU21がメインプログラムを実行する前、又は、メインプログラムの実行が開始された後の負荷が低下した状態などである。CPU21がメインプログラムを実行する前とすると、検査パターンの数が多い場合にメインプログラムの起動までに時間がかかってしまう。したがって、開発者等が検査の終了までの時間を計測しておき所定時間以上の場合は、CPU21がメインプログラムを実行する前でなく、メインプログラムの実行開始後に検査することが好ましい。動作手順図7は、検査回路200の動作手順を説明する図の一例である。図7の手順は、IGオンやBなど情報処理装置100が起動条件を満たしている状態で実行される。まず、制御部16はCPU負荷を監視しており、CPU負荷が低下したか否かを判定しているS10。CPU負荷の算出方法はいくつかあるが、例えば命令キュー32に記憶された命令が所定値以下になった場合、制御部16はCPU負荷が低下したと判定する。CPU負荷が低下した場合S10のYes、制御部16は結果記憶部18に記憶されている初期値又は最後の検査パターンを読み出すS20。制御部16は読み出した検査パターンを疑似ランダムパターン生成器11にセットするS30。疑似ランダムパターン生成器11はセットされた次の検査パターンから、又は、最後に生成した次の検査パターンから検査パターンを生成するS40。制御部16は疑似ランダムパターン生成器11が生成した検査パターンにいくつかのオペコードを設定してALU20に実行させ、DMAC26が期待値アドレスとアドレスオフセット値を加えた読み出しアドレスから期待値を読み出すS50。制御部16は、期待値から演算種類に対応した部分を取り出し排他的論理和回路15に出力する。これを、ALU20が演算結果を排他的論理和回路15に出力する毎に行うことで、演算種類毎に期待値と演算結果が比較されるS60。次に、ゼロ設定部17は、検査パターンがALLゼロを挿入すべき特定のパターンであったか否かを判定するS70。特定のパターンでない場合S70のNo、処理はステップS90に進む。特定のパターンであった場合S70のYes、制御部はゼロ設定部17にALLゼロの検査パターンを生成させ、ALU20に実行させるS80。この後、ステップS50,60が実行される。制御部16は、1つの検査パターンの検査毎にCPU負荷が増大したか否かを判定しS90、CPU負荷が高くなると検査を中断する。そして、疑似ランダムパターン生成器11が最後に生成した検査パターンを結果記憶部18に記憶するS100。この後、制御部16は、CPU負荷が低下する毎に検査を実行する。CPU負荷が高くない場合S90のNo、処理はS40に戻り、制御部は次の検査パターンによる検査を継続する。図7の処理では、検査パターンの1周期が終わっても検査が再開するが、決まった回数だけ1周期分の検査が終わったら、所定時間をおいて検査を再開してもよい。以上説明したように、本実施例の情報処理装置100は、100の故障検出率にてALU20を検査することができる。また、期待値のみを記憶するので記憶容量を低減でき、また、検査パターンから期待値の読み出しアドレスを生成するので、期待値と検査パターンを対応づけて記憶したり、期待値と検査パターンを対応づける仕組みが不要になる。本実施例では検査パターンをソフト的に利用して故障を検出可能な情報処理装置100について説明する。図8は、情報処理装置100のハードウェア構成図の一例を示す。図8において図4と同一部の説明は省略する。本実施例の情報処理装置100はソフト的に検査するため、検査回路200の構成を簡易化できる。このため、検査回路200は疑似ランダムパターン生成器11と結果記憶部18を有する。これらの機能は実施例1とほぼ同様である。また、ROM13にはメインプログラムの他、検査プログラムが記憶されている。検査プログラムは疑似ランダムパターン生成器11が生成した検査パターンを用いてALU20を検査するプログラムである。図9を用いて検査プログラムについて説明する。図9は、検査プログラムの機能を説明する図の一例である。CPU21が検査プログラムを実行することで検査引数処理部41、ゼロ生成部42、演算処理部43、期待値読み出し部45、及び、期待値比較部44が得られる。本実施例の疑似ランダムパターン生成器11は、オペランドそのものでなく、オペランドを生成するための検査引数を生成する。検査引数処理部41は、ソフト的に検査引数からオペランドを生成するので、検査引数は実施例1のように第1オペランドと第2オペランドそれぞれである必要がない。したがって、疑似ランダムパターン生成器11が生成する検査パターンの桁数を少なくすることができる。検査引数処理部41は、例えば以下のようにして8ビットの第1オペランドと第2オペランドに相当する検査引数を生成する。検査引数を上位4ビットと下位4ビットにわけ、それぞれを下位4ビットとして上位ビットには4つの0で埋める検査引数を複製する検査引数に1等の決まった数を足してもう1つの検査引数を生成する検査引数を定数倍してもう1つの検査引数を生成する一番上の例だと、00000001を2つに分けると00000001が得られ、4つのゼロビットを埋めることで、0000000000000001が得られる。こうすることで、例えば加算する際の2つの変数が得られる。なお、実施例1と同様に疑似ランダムパターン生成器11が2つの検査引数を生成しても何ら不都合はない。演算処理部43は、2つの変数に順次、ALU20の検査に必要な演算を行う。例えば、ALU20が加算と乗算が可能な場合、演算処理部43は、加算した結果に対し乗算を行うなどの処理を行う。下記ではaとbが検査引数から生成された2つの変数である。y=abz=y×y演算処理部43はこのようにして演算した演算結果を期待値比較部44に出力する。先ほどの例では、y=0000000000000001z=00000001×00000001=00000001が得られる期待値の桁数に応じて上位ビットは捨てる。そして、ROM13の期待値には、正しく演算された場合のzの値のみが、期待値アドレスアドレスオフセット値で得られる読み取りアドレスに記憶されている。このため、加算回路用、乗算回路用などの演算種類毎の期待値をROM13に記憶しておく必要がないので、ROM13における期待値の記憶容量をさらに低減できる。なお、実際にはこのようなソースコードがコンパイルされるので、や×が、検査対象の回路を使用するオペコード例えば、ADDやMULに変換されないおそれがある。このため、コンパイル時にADDやMULに変換することが実行速度等の点から好ましくなくても最適化可能でも、開発者は、や×がADDやMULに変換されるようにコンパイルを調整しておく。また、y=abz=y×yをアセンブリで記述することも有効である。この他の演算種類の演算をALU20が可能な場合、それら全ての演算後の演算結果を期待値としてROM13に記憶しておけばよい。したがって、演算種類に関係なく期待値を1つにすることができる。期待値読み出し部45は、ROM13から期待値を読み出す。期待値読み出し部45は、ROM13からアドレスオフセット値を読み出し、疑似ランダムパターン生成器11が生成した検査引数を加えることで、読み出しアドレスを生成する。そして、ROM13の読み出しアドレスから読み出した期待値を期待値比較部44に出力する。また、ゼロ生成部42は、疑似ランダムパターン生成器11が生成した検査引数が特定のパターンの場合、ALLゼロの検査引数を演算処理部43に送出する。ゼロ生成部42はソフト的に上記のaとbのどちらもゼロの検査引数を生成することができる。期待値比較部44は、演算結果と期待値を比較する。例えば、判定結果が一致しないという判定結果の場合、検査引数を結果記憶部18に記憶させる。また、期待値比較部44に、予め特定の期待値の読み出しアドレスを登録しておくことも有効である。特定の期待値の読み出しアドレスは、情報処理装置100にとって重要な機能の故障のおそれがあることが検出される可能性が高い検査引数の期待値が記憶されたアドレスである。検査プログラムは、その期待値と演算結果が一致しない場合、フェールセーフ処理を呼び出す。これにより、警報を吹鳴したり、外部に通報したり、情報処理装置100をリセットするなどのフェイルセーフが可能になる。以上のように、ソフト的に検査する場合、ソフトの柔軟性を利用して演算結果をさらに演算対象にすることでROM13の記憶容量を低減できる。しかしながら、加算結果は全ての検査パターンを網羅するは限らない。例えば、abとcdの加算結果が同じになる場合がある。この場合、どちらの加算結果を用いても乗算結果は同じになるので、疑似ランダムパターン生成器11が生成した検査引数が重複しない場合でも、全ての回路や素子を検査しているとは限らないおそれがある。このような検査引数の重複による故障検出率の低下は、演算種類が多いほど起こりうる。このような不都合を低減するには、疑似ランダムパターン生成器11が生成するビット数を多くして複製などにより生成される部分を少なくすること、全ての演算種類に1つの期待値とするのでなく、所定数の演算種類毎に期待値をROM13に記憶しておくこと例えば、加算と乗算で1つの期待値、シフトと除算で1つの期待値をそれぞれ記憶しておく等が有効である。後者の例では全ての演算種類の演算のうち中間結果を期待値と比較することになる。図10は、検査回路200の動作手順を説明する図の一例である。検査プログラムはメインプログラムに比べて優先度が低い。CPU21やCPUコアが複数ある場合、情報処理装置100はメインプログラムを特定のCPUやCPUコアに割り当てて実行し、別のCPUやCPUコアに検査プログラムを割り当てることができる。また、1つのCPU21をメインプログラムと検査プログラムが共用する場合は、スケジューラが優先度に応じてメインプログラムと検査プログラムをスケジューリングする。こうすることで、情報処理装置100は、メインプログラムの実行を阻害せずに、検査プログラムを実行できる。メインプログラムは、例えば情報処理装置100にイベントが生じた時やタイマによる周期的なタイミングで1つ以上のタスクを生成する。または、重要度の低い検査プログラムよりも低いか同程度アイドルタスクなどは常に生成された状態になっている。タスクの生成時タスクは生成により実行可能状態になるに使用されるAPIには優先度が指定可能なので、メインプログラムの各タスクにはタスク内容に応じた優先度が記述されている。生成されているタスクの状態や優先度などの情報はTCBに登録される。同様に、検査プログラムも例えば1つの検査を1つのタスクとして、実行可能なように記述されているが、検査プログラムのタスクの優先度は必ずメインプログラムのタスクよりも低い。スケジューラは、1つのタスクの終了時やタイムスライスなどの決まった時間毎にタスクの情報が登録されているTCBを参照して、実行可能状態のタスクの中から最も優先度の高いタスクを実行状態にするこのタスクのアドレスをプログラムカウンタ31に設定する。したがって、検査プログラムのタスクの優先度が最も高くなると、CPU21は検査プログラムの実行を開始するS110。それ以外の場合はメインプログラムを実行するS120。まず、検査引数処理部41は、再開時の検査パターンを読み出すS210。初めて、検査を開始する場合はALLゼロ以外の初期値であるが、初期値はゼロ以外であればどのような値でもよい。前回の検査パターンが特定のパターンだった場合S220のYes、ALLゼロを検査パターンにする必要があるため、ゼロ生成部42はALLゼロを生成し検査パターンにするS300。前回の検査パターンが特定のパターンでなかった場合S220のNo、検査引数処理部41は、疑似ランダムパターン生成器11に検査引数を要求するS230。この際、疑似ランダムパターン生成器11に、読み出した検査引数をセットする。検査引数処理部41は疑似ランダムパターン生成器11が生成した検査引数を取得するS240。これにより、レジスタセット34に検査引数が記憶される。次に、演算処理部43は一連の演算種類による演算を実行するS250。上記のように演算内容は検査プログラムに記述されている。演算結果はレジスタセット35に記憶される。次に、期待値読み出し部45は、アドレスオフセット値をROM13から読み出し、検査引数に加算するS260。期待値読み出し部45は、加算した結果を読み出しアドレスに指定して、ROM13から期待値を読み出すS270。期待値はレジスタセットに記憶される。次に、期待値比較部44は、レジスタセットに記憶されている期待値と演算結果を比較するS280。すなわち、比較は1回でよい。なお、検査引数処理部41は検査引数から変数などを生成した後、検査パターンを結果記憶部18に記憶しておくS290。ここまでの処理が終了すると、比較結果に異常がなければスケジューラが起動し、メインプログラム又は検査プログラムが実行される。比較結果に異常があれば、メインプログラムとフェールセーフ処理の優先順位に応じて処理されるタスクが決まる。以上説明したように、本実施例の情報処理装置100は、演算の引数に別の演算の演算結果を利用することでROM13に記憶しておく期待値の記憶容量を低減できる。実施例1,2では、期待値として正しい演算結果をROM13に記憶していたが、本実施例では期待値として検査パターンを用いた演算が正しいか否かをROM13に記憶する情報処理装置100について説明する。ROM13に記憶するのは正しいか否かのフラグでよいので記憶容量を極めて低減できる。図11は、検査方法を模式的に説明する図の一例である。疑似ランダムパターン生成器11はこれまでと同様、ランダムなパターン実施例1,2と区別するためランダムパターンというを生成する。このとき、本実施例の情報処理装置100はランダムパターンの一部を演算結果とみなすことに特徴の一つがある。例えば、図の例で000000010000000000000001というランダムパターンが生成されると、情報処理装置100は00000001を検査引数、0000000000000001を演算結果とみなす。そして、実施例2と同様に00000001から変数を2つ作って、例えば加算を行いその加算結果を利用して乗算を行う。ALU20が故障していなければ、演算結果は、0000000000000001となるはずである。すると上記のランダムパターンの演算結果が正しいものであるので、開発者は予めROM13にこのランダムパターンの期待値として1を記憶しておく。情報処理装置100は実際の演算結果と、ランダムパターンの演算結果を比較して一致すると判定すると1を生成し、一致しないと判定すると0を生成する以下、この比較結果をパターン比較結果という。期待値は1なので、このランダムパターンを用いた検査では、パターン比較結果が1なら、故障していないことがわかる。一方、11000010000011110010100というランダムパターンが生成されると、情報処理装置100は11000010を検査引数、000011110010100を演算結果とみなす。この検査引数に同様の演算を行ってもランダムパターンの演算結果部分と一致しないので、開発者は予めROM13にこのランダムパターンの期待値として0を記憶しておく。情報処理装置100は実際の演算結果と、ランダムパターンの演算結果を比較して一致すると判定するとパターン比較結果1を生成し、一致しないと判定すると0を生成する。期待値は0なので、このランダムパターンを用いた検査では、パターン比較結果が0なら、故障していないことがわかる。このように、ランダムパターンの検査引数と演算結果の組み合わせが正解か不正解かを予めROM13に記憶しておくことで、ROM13の期待値の記憶容量を極めて少なくできる。実際には、検査引数と演算結果の組み合わせは多くの場合、一致ないという期待値0になる。このため、一致しないことがALUの故障によるものか、正しい演算によるものかを、期待値と、パターン比較結果との比較結果から判別できない。しかし、全てのランダムパターンのうち、必ず1つ以上に検査引数による演算と演算結果部分の組み合わせが一致するランダムパターンが存在する。一致すべき組合せで一致する限り、一致するべきでない組合せで実際の演算結果とランダムパターンの演算結果部分が一致しないというパターン比較結果が得られるのであれば、検査結果としては有効な有意性を持つといえる。ただし、一致するべきでない組合せでのみ検出される故障については検出できないので、この分、故障検出率は低下する。図12aは、検査プログラムの機能を説明する図の一例である。図12において図9と同一部の説明は省略する。本実施例の検査プログラムは、新たに結果比較部46を有する。結果比較部46は、演算処理部43が演算した演算結果と疑似ランダムパターン生成器11が生成したランダムパターンの演算結果部分を全てのビットで比較して、一致すれば1を、一致しなければ0を生成する。本実施例の期待値比較部44は、パターン比較結果と、期待値読み出し部45が読み出した10の期待値を比較して、一致するか否かを判定する。期待値の比較結果に基づくフェールセーフ処理については実施例2と同様である。なお、ROM13には、アドレスオフセット値ランダムパターンの読み出しアドレスに、該ランダムパターンの検査引数と演算結果の組が正しいか否かを示す期待値が記憶されている。期待値は上記のとおり1が検査引数による演算が演算結果部分と一致することを、0が一致しないことを示すものとする。ランダムパターンに演算結果が含まれるためランダムパターンのビット数を多くする必要がある。しかし、ほとんどの期待値は正しくないことを示す0であるので、検査引数のビット数を少なくしても、ほとんどの期待値が正しくないことを示す0になることに変わりはない。このため、ランダムパターンの桁数を少なくするために、検査引数の桁を低減してもよい。図12bは、期待値の別の一例を示す図である。図12aでは期待値に正しいか正しくないかを示す10を格納したが、期待値を桁番号とすることもできる。この桁番号は、ランダムパターンの演算結果のうち、正しい演算結果が立つビットの位置を上位又は下位からの番号で示す。例えば、000000010000000000000001というランダムパターンでは、ランダムパターンの演算結果部分の全てのビットで正しい演算結果となるので期待値は例えばALLとなる。また、11000010000011110010100というランダムパターンでは、正しい演算結果が得られるビットが、例えば下位から1桁目,3桁目,8桁目,12桁目、の場合、期待値は1,3,8,12となる。このような期待値の場合、結果比較部46は、演算処理部43が演算した演算結果と疑似ランダムパターン生成器11が生成した演算結果をビット毎に比較して、一致した桁番号を期待値比較部44に出力する。期待値比較部44は、結果比較部46が出力した桁番号と、期待値読み出し部45が読み出した期待値桁番号が一致するか否かを比較する。一致すれば、ALU20は故障していないことが分かる。疑似ランダムパターン生成器11が生成したランダムパターンの検算結果はほとんどが不正確でもビット単位なら、演算処理部43の演算結果と一致するビットがある。このため、ランダムパターンのどのビットで演算結果が一致するかを検証することで、疑似ランダムパターン生成器11が演算結果を生成する場合でも、故障を検出しやすくなる。図13は、検査プログラムの動作手順を説明する図の一例である。図13において図10と同様のステップについては説明を省略する。検査プログラムのタスクが開始されると、検査引数処理部41は、再開時のランダムパターンを読み出すS212。前回のランダムパターンが特定のパターンだった場合S220のYes、ゼロ生成部42はALLゼロを生成し検査パターンにするS300。前回のランダムパターンが特定のパターンでなかった場合S220のNo、検査引数処理部41は、疑似ランダムパターン生成器11にランダムパターンを要求するS232。演算処理部43はランダムパターンから検査引数だけを取り出すS242。そしてALUは一連の演算を実行するS250。そして、結果比較部46は、ランダムパターンから演算結果を取り出し、演算処理部43の演算結果と比較するS255。次に、期待値読み出し部45は、アドレスオフセット値をROM13から読み出し、ランダムパターンに加算するS262。期待値読み出し部45は、加算した結果を読み出しアドレスに指定して、ROM13から期待値を読み出すS272。次に、期待値比較部44は、レジスタセットに記憶されている期待値とパターン比較結果を比較するS282。検査引数処理部41は検査引数から変数などを生成した後、検査パターンを結果記憶部18に記憶しておくS292。ハード的な実現方法本実施例では、ソフト的に検査する方法について説明したが、ハード的に検査することも可能である。図14は、検査回路200の構成図の一例を示す。図14において図4と同一部の説明は省略する。疑似ランダムパターン生成器11は、第1、第2オペランドと演算結果を含むランダムパターンを生成する。制御部16はランダムパターンのうち第1、第2オペランドをALU20に送出して演算を実行させる。また、制御部16はランダムパターンの演算結果部分を1段目の排他的論理和回路15aに出力するので、ALU20の演算結果とランダムパターンの演算結果が1段目の排他的論理和回路15aで比較される。この比較結果は2段目の排他的論理和回路15bに出力される。加算器14はアドレスオフセット値とランダムパターンを加算した読み出しアドレスをDMAC26に出力するので、ROM13から期待値が読み出され2段目の排他的論理和回路15bに出力される。したがって、2段目の排他的論理和回路15bはパターン比較結果と期待値を比較することができる。このように、ハード的にも同様の検査が可能である。以上説明したように、本実施例の情報処理装置100は極めて少ない記憶容量で、ALU20の故障を検出することができる。"