"データを記憶する記憶装置と、入力部と、演算部と、記憶部と、判定部と、訂正部とを有し、上記入力部は、複数の入力データを入力し、上記演算部は、所定の演算により、上記入力部が入力した複数の入力データに基づいて、誤り検出データを算出し、上記記憶部は、上記記憶装置を用いて、上記入力部が入力した複数の入力データと、上記演算部が算出した誤り検出データとを記憶し、上記判定部は、上記演算部が上記誤り検出データの算出に用いた演算により上記記憶装置が記憶した複数の入力データから算出されるデータと、上記記憶装置が記憶した誤り検出データとが一致するか否かを判定し、上記訂正部は、上記記憶装置が記憶した複数の入力データから算出されるデータと上記記憶装置が記憶した誤り検出データとが一致しないと上記判定部が判定した場合に、上記記憶装置が記憶した複数の入力データと上記記憶装置が記憶した誤り検出データとのうちから、誤っているデータを特定し、誤っていると特定したデータについて、正しいデータを算出することを特徴とするデータ記憶装置。上記演算部は、所定の演算により、上記入力部が入力した2つの入力データから1つの誤り検出データを算出し、上記記憶部は、上記演算部が算出した誤り検出データと、上記演算部が上記誤り検出データの算出に用いた2つの入力データとを、上記記憶装置の物理的に離れた領域を用いて記憶することを特徴とする請求項1に記載のデータ記憶装置。上記演算部は、所定の演算により、上記入力部が入力した2つの入力データから1つの誤り検出データを算出し、上記記憶部は、上記演算部が1つの誤り検出データの算出に用いた2つの入力データを、上記記憶装置の物理的に離れた領域を用いて記憶することを特徴とする請求項1または請求項2に記載のデータ記憶装置。上記入力部は、3つ以上の入力データを入力し、上記演算部は、所定の演算により、上記入力部が入力した第一の入力データと上記入力部が入力した第二の入力データとから第一の誤り検出データを算出し、所定の演算により、上記入力部が入力した上記第二の入力データと上記入力部が入力した第三の入力データとから第二の誤り検出データを算出し、上記訂正部は、上記記憶装置が記憶した第一の入力データと上記記憶装置が記憶した第二の入力データとから算出されるデータと上記記憶装置が記憶した第一の誤り検出データとが一致しないと上記判定部が判定し、かつ、上記記憶装置が記憶した第二の入力データと上記記憶装置が記憶した第三の入力データとから算出されるデータと上記記憶装置が記憶した第二の誤り検出データとが一致しないと上記判定部が判定した場合に、上記記憶装置が記憶した第二の入力データが誤っていると判定し、上記記憶装置が記憶した第一の入力データと上記記憶装置が記憶した第一の誤り検出データとに基づいて、上記演算部が上記第一の誤り検出データの算出に用いた演算の逆演算により、正しい第二の入力データを算出することを特徴とする請求項1乃至請求項3のいずれかに記載のデータ記憶装置。上記入力部は、4つ以上の入力データを入力し、上記演算部は、所定の演算により、上記入力部が入力した第一の入力データと上記入力部が入力した第二の入力データとから第一の誤り検出データを算出し、所定の演算により、上記入力部が入力した上記第二の入力データと上記入力部が入力した第三の入力データとから第二の誤り検出データを算出し、所定の演算により、上記入力部が入力した上記第三の入力データと上記入力部が入力した第四の入力データとから第三の誤り検出データを算出し、上記訂正部は、上記記憶装置が記憶した第一の入力データと上記記憶装置が記憶した第二の入力データとから算出されるデータと上記記憶装置が記憶した第一の誤り検出データとが一致すると上記判定部が判定し、かつ、上記記憶装置が記憶した第二の入力データと上記記憶装置が記憶した第三の入力データとから算出されるデータと上記記憶装置が記憶した第二の誤り検出データとが一致しないと上記判定部が判定し、かつ、上記記憶装置が記憶した第三の入力データと上記記憶装置が記憶した第四の入力データとから算出されるデータと上記記憶装置が記憶した第三の誤り検出データとが一致すると上記判定部が判定した場合に、上記記憶装置が記憶した第二の誤り検出データが誤っていると判定し、上記記憶装置が記憶した第二の入力データと上記記憶装置が記憶した第三の入力データとに基づいて、上記演算部が上記第二の誤り検出データの算出に用いた演算により、正しい第二の誤り検出データを算出することを特徴とする請求項1乃至請求項4のいずれかに記載のデータ記憶装置。上記データ記憶装置は、更に、出力部を有し、上記出力部は、上記記憶装置が記憶した入力データのうち、誤っていると上記訂正部が判定した入力データについて、上記訂正部が算出した入力データを出力し、誤っていると上記訂正部が判定しなかった入力データについて、上記記憶装置が記憶した入力データを出力することを特徴とする請求項1乃至請求項5のいずれかに記載のデータ記憶装置。上記データ記憶装置は、更に、出力部を有し、上記記憶部は、上記訂正部が誤っていると判定したデータについて、上記記憶装置を用いて、上記訂正部が算出した正しいデータを記憶し、上記出力部は、上記記憶装置が記憶した入力データを出力することを特徴とする請求項1乃至請求項5のいずれかに記載のデータ記憶装置。請求項6または請求項7に記載のデータ記憶装置と、上記データ記憶装置の出力部が出力した入力データに基づいて、データ処理をする処理部とを有することを特徴とするデータ処理装置。データを記憶する記憶装置を有するコンピュータを、請求項1乃至請求項7のいずれかに記載のデータ記憶装置または請求項8に記載のデータ処理装置として機能させることを特徴とするコンピュータプログラム。データを記憶する記憶装置を有するデータ記憶装置が、データを記憶するデータ記憶方法において、上記データ記憶装置が、複数の入力データを入力し、上記データ記憶装置が、所定の演算により、入力した複数の入力データに基づいて、誤り検出データを算出し、上記データ記憶装置が、上記記憶装置を用いて、入力した複数の入力データと、算出した誤り検出データとを記憶し、上記データ記憶装置が、上記誤り検出データの算出に用いた演算により上記記憶装置が記憶した第一の入力データと上記記憶装置が記憶した第二の入力データとから算出されるデータと、上記記憶装置が記憶した誤り検出データとが一致するか否かを判定し、上記記憶装置が記憶した複数の入力データから算出されるデータと上記記憶装置が記憶した誤り検出データとが一致しないと判定した場合に、上記データ記憶装置が、上記記憶装置が記憶した複数の入力データと上記記憶装置が記憶した誤り検出データとのうちから、誤っているデータを特定し、誤っていると特定したデータについて、正しいデータを算出することを特徴とするデータ記憶方法。デバイス構造の工夫などによりソフトエラーの発生を抑える技術では、ソフトエラーの発生確率を低くすることはできるが、ソフトエラーの発生をなくすことはできない。また、誤り訂正符号によって訂正できるビット数には上限がある。また、物理的に異なるメモリを複数設けると、実装面積が増え、装置を小型化することができない。この発明は、例えば上記のような課題を解決するためになされたものであり、実装面積を増大させることなく、ソフトエラーの発生を検出し、訂正できるようにすることを目的とする。この発明にかかるデータ記憶装置は、データを記憶する記憶装置と、入力部と、演算部と、記憶部と、判定部と、訂正部とを有し、上記入力部は、複数の入力データを入力し、上記演算部は、所定の演算により、上記入力部が入力した複数の入力データに基づいて、誤り検出データを算出し、上記記憶部は、上記記憶装置を用いて、上記入力部が入力した複数の入力データと、上記演算部が算出した誤り検出データとを記憶し、上記判定部は、上記演算部が上記誤り検出データの算出に用いた演算により上記記憶装置が記憶した複数の入力データから算出されるデータと上記記憶装置が記憶した誤り検出データとが一致するか否かを判定し、上記訂正部は、上記記憶装置が記憶した複数の入力データから算出されるデータと上記記憶装置が記憶した誤り検出データとが一致しないと上記判定部が判定した場合に、上記記憶装置が記憶した複数の入力データと上記記憶装置が記憶した誤り検出データとのうちから、誤っているデータを特定し、誤っていると特定したデータについて、正しいデータを算出することを特徴とする。この発明にかかるデータ記憶装置によれば、ソフトエラーなどの影響により、記憶装置が記憶した入力データや誤り検出データが変わってしまった場合に、そのことを検出して訂正することができる。実施の形態1.実施の形態1について、図1~図4を用いて説明する。図1は、この実施の形態における信号処理装置100の構成の一例を示す構成図である。信号処理装置100データ処理装置、データ記憶装置は、入力データ501を入力し、記憶する。信号処理装置100は、記憶したデータを読み出して、出力データ502を出力する。信号処理装置100は、記憶したデータがソフトエラーなどにより変わってしまった場合、誤りを検出して訂正し、訂正したデータを出力データ502として出力する。信号処理装置100は、例えば、演算装置101と、記憶装置102と、R/W制御装置103と、データ生成装置104とを有する。演算装置101は、入力データ501に後述する演算を実施して、誤り検出データ503を出力する。記憶装置102は、入力した入力データ501と、誤り検出データ503とを書込んで記憶し、記憶したデータを読み出す。R/W制御装置103は、記憶装置102の書込みと読出しを制御し、ならびに、演算装置101やデータ生成装置104の動作タイミングを制御する。データ生成装置104は、記憶装置102から読み出した読出データ504から、真の出力データ502を生成する。入力データ501は、基本データ幅例えば8ビット、16ビット、32ビットなど任意のビット幅で構成されている。信号処理装置100は、N個の入力データ501を入力する。ただし、Nは、3以上の整数である。演算装置101入力部演算部は、例えばFPGAField-ProgrammalbeGateArrayなどを用いて構成したロジックにより実現される。演算装置101は、i番目の入力データ501と、i1番目の入力データ501とに基づいて、i番目の誤り検出データ503を生成する。ただし、iは、1以上N-1以下の整数である。演算装置101が用いる演算は、可逆性を有する。例えば、ビット毎の排他的論理和、2進数の加算や減算、2進数の乗算や除算ただし、入力データ501が0でない場合に限る。など、元の2つのデータと演算結果とのうち、2つがわかれば、残りの1つが算出できるという特性を有する。すなわち、i番目の入力データ501と、i番目の誤り検出データ503とから、i1番目の入力データ501を導出できる演算以下逆演算と呼ぶ。が存在し、i1番目の入力データ501と、i番目の誤り検出データ503とから、i番目の入力データ501を導出できる逆演算が存在する。逆演算は、ビット毎の排他的論理和のように、もとの演算と同一の演算であってもよいし、2進数の加算に対する減算のように、もとの演算と異なる演算であってもよい。例えば、演算装置101は、垂直パリティビット毎の排他的論理和を演算として用いる。i番目の入力データ501が0xA5=10100101、i1番目の入力データ501が0xCC=11001100である場合、演算装置101は、i番目の誤り検出データ503として、0x69=01101001を算出する。また、演算装置101は、最後N番目の入力データ501と、最初1番目の入力データ501とに基づいて、N番目の誤り検出データ503を生成する。なお、演算装置101が用いる演算は、1種類に限らず、2種類以上であってもよい。例えば、1番目の誤り検出データ503を算出するのに用いる演算と、2番目の誤り検出データ503を算出するのに用いる演算とが異なる演算であってもよい。記憶装置102は、例えば、フラッシュメモリ、E2PROMElectricallyErasableProgrammableRead-OnlyMemory、SDRAMSynchronousDynamicRandomAccessMemoryなどのメモリ素子など、データを記憶し、記憶したデータを読み出すことができる装置である。記憶装置102は、i番目の入力データ501及びi1番目の入力データ501と、i番目の誤り検出データ503とを、物理的に離れた領域に記憶する。例えば、記憶装置102がメモリ素子である場合、記憶装置102は、メモリ内の物理的に連続しない領域に、i番目の入力データ501及びi1番目の入力データ501と、i番目の誤り検出データ503とを記憶する。これは、宇宙線などの影響によって発生するソフトエラーは、メモリ素子単位で発生するため、メモリ内の物理的に連続しない領域でソフトエラーが同時に発生する確率は、著しく低いからである。図2は、この実施の形態における記憶装置102が記憶するデータの配置の一例を示す図である。記憶装置102は、複数のデータを記憶する。記憶装置102がデータを記憶する領域には、アドレス510が割り振られている。記憶装置102は、アドレス510を指定することにより、任意の領域にデータを書き込み、書き込んだデータを読み出すことができる。連続するアドレス510を割り振られた領域は、物理的にも連続しているものとする。例えば、記憶装置102は、i番目の入力データ501をi-1番地に記憶する。また、記憶装置102は、i番目の誤り検出データ503をNi-1番地に記憶する。これにより、i番目の誤り検出データ503は、i番目及びi1番目の入力データ501から物理的に離れた領域に記憶される。なお、各データを記憶するアドレス510は、i番目の誤り検出データ503がi番目及びi1番目の入力データ501から物理的に離れた領域に記憶されるのであれば、この例と異なる構成であってもよい。例えば、記憶装置102は、所定の計算式により、入力データ501や誤り検出データ503を記憶するアドレス510を算出する構成であってもよいし、LUTLookupTableを用いて、入力データ501や誤り検出データ503を記憶するアドレス510を取得する構成であってもよい。R/W制御装置103記憶部は、例えばFPGAなどを用いて構成されたロジックにより実現される。R/W制御装置103は、メモリ配置のアドレスを計算する。また、R/W制御装置103は、書込みアドレスを指定して、入力データ501や誤り検出データ503を記憶装置102に書き込み、選択的に読み出しアドレスを指定して、記憶装置102が記憶したデータを読み出す。さらに、R/W制御装置103は、演算装置101が、入力データ501から誤り検出データ503を演算するタイミングを制御する。また、R/W制御装置103は、データ生成装置104が記憶装置102が記憶したデータを読み込み、ソフトエラー発生を検出して、エラー発生時にデータを訂正するタイミングを制御する。データ生成装置104判定部訂正部は、例えばFPGAなどを用いて構成されたロジックにより実現される。データ生成装置104は、記憶装置102から読み出したデータから、出力データ502を生成する。データ生成装置104は、R/W制御装置103による読出し制御信号にしたがって、記憶装置102から読み出した読出データ504を入力する。データ生成装置104は、記憶装置102がi番目iは、1以上N以下の整数。の入力データ501を記憶した領域例えばi-1番地から読み出した読出データ504以下i番目の読出入力データと呼ぶ。他も同じ。を入力する。データ生成装置104は、i1番目ただし、i=Nのときは、1番目の読出入力データを入力する。データ生成装置104は、記憶装置102がi番目の誤り検出データ503を記憶した領域例えばNi-1番地から読み出した読出データ504以下i番目の読出誤り検出データと呼ぶ。他も同じ。を入力する。データ生成装置104は、入力した3つの読出データ504以下i番目の3つ組データと呼ぶ。の間の整合性を検証する。すなわち、データ生成装置104は、i番目の読出入力データと、i1番目の読出入力データとから、演算装置101と同じ演算により算出されるデータが、i番目の読出誤り検出データと一致するか否かを判定する。例えば、データ生成装置104は、演算装置101と同じ演算を使って、i番目の読出入力データと、i1番目の読出入力データ501とから、誤り検出データ503検査データを算出する。データ生成装置104は、算出した誤り検出データ503と、i番目の読出誤り検出データ503とを比較して、一致しているか否かを判定する。なお、データ生成装置104は、演算装置101と同じ演算をするのではなく、例えば、i番目の読出入力データ501と、i番目の読出誤り検出データとに基づいて、演算装置101が使った演算の逆演算により、i1番目の入力データ501を算出し、算出したi1番目の入力データ501と、i1番目の読出入力データとを比較して、一致しているか否かを判定する構成であってもよい。あるいは、データ生成装置104は、演算装置101が使った演算に対応する判定式を用いて、3つの読出データ504に基づく判定値を算出し、算出した判定値が所定の値に一致するか否かを判定する構成であってもよい。i番目の3つ組データに整合性がある場合、データ生成装置104は、3つの読出データ504が、それぞれ正しく、i番目の入力データ501、i1番目の入力データ501、i番目の誤り検出データ503であると判定し、出力データ502として出力する。i番目の3つ組データに整合性がない場合、データ生成装置104は、3つの読出データ504のうちのいずれかが間違っていると判定する。これは、例えば、ソフトエラーの影響などにより、記憶装置102が記憶したデータにビット反転などの異常が起き、記憶装置102が記憶したもとのデータと異なるデータが読み出されることにより発生する。その場合、データ生成装置104は、整合性の検証結果に基づいて、どの読出データ504が間違っているかを特定し、特定した読出データ504について、もとの正しいデータを算出する。データ生成装置104は、算出したデータを出力データ502として出力する。記憶装置102は、R/W制御装置103による書込み制御信号にしたがって、データ生成装置104が出力した出力データ502を、データ生成装置104が間違っていると特定した読出データ504を記憶していた記憶領域に上書きして記憶する。なお、データ生成装置104の判定結果にかかわらず、記憶装置102は、データ生成装置104が出力した出力データ502を、データ生成装置104が読み出した読出データ504を記憶していた記憶領域に上書きして記憶する構成であってもよい。図3は、この実施の形態におけるデータ生成装置104による判定の一例を示す図である。丸は、読出入力データを表わす。菱形は、読出誤り検出データを表わす。破線は、3つ組データを表わす。網掛けは、整合性があると判定された3つ組データを表わす。i番目の3つ組データに整合性がなく、i-1番目及びi1番目の3つ組データに整合性がある場合、以下のようにして、間違っている読出データ504を特定できる。i番目の3つ組データに整合性がないので、i番目の読出入力データと、i1番目の読出入力データと、i番目の読出誤り検出データとのうちのいずれかが、間違っている。しかし、i-1番目の3つ組データに整合性があるので、i番目の読出入力データは正しい。同様に、i1番目の3つ組データに整合性があるので、i1番目の読出入力データも正しい。したがって、間違っているのは、i番目の読出誤り検出データである。i番目の3つ組データに整合性がなく、i-1番目及びi1番目の3つ組データに整合性があると判定した場合、データ生成装置104は、i番目の読出誤り検出データが間違っていると判定する。データ生成装置104は、i番目の3つ組データのうち正しいと判定した2つの読出データ504、すなわち、i番目の読出入力データと、i1番目の読出入力データとに基づいて、演算装置101と同じ演算により、i番目の誤り検出データ503を算出する。データ生成装置104は、正しいと判定した2つの読出データ504と、算出した誤り検出データ503とを、出力データ502として出力する。記憶装置102は、i番目の誤り検出データ503を記憶していた領域のデータを消去し、データ生成装置104が算出したi番目の誤り検出データ503を上書きして記憶する。なお、記憶装置102は、i番目の誤り検出データ503を記憶していた領域を使うのを止め、別の領域を使って、データ生成装置104が算出したi番目の誤り検出データ503を記憶する構成であってもよい。その場合、記憶装置102は、LUTなどを書き換えて、i番目の誤り検出データ503を新たに記憶した領域に正しくアクセスできるようにする。図4は、この実施の形態におけるデータ生成装置104による判定の別の例を示す図である。連続した2つの3つ組データに整合性がない場合は、以下のようにして、間違っている読出データ504を特定する。i番目の3つ組データに整合性がないので、i番目の読出入力データと、i1番目の読出入力データ501と、i番目の読出誤り検出データとのうちのいずれかが、間違っている。また、i1番目の3つ組データに整合性がないので、i1番目の読出入力データと、i2番目の読出入力データと、i1番目の読出誤り検出データとのうちのいずれかが間違っている。両者に共通するのは、i1番目の読出入力データだけである。2つの読出データ504が同時に間違っている可能性が極めて低い場合、間違っているのは、i1番目の読出入力データであると考えてよい。i番目及びi1番目の3つ組データに整合性がないと判定した場合、データ生成装置104は、i1番目の読出入力データが間違っていると判定する。データ生成装置104は、i番目の3つ組データのうち、正しいと判定した2つの読出データ504、すなわち、i番目の読出入力データと、i番目の読出誤り検出データとに基づいて、演算装置101が使った演算の逆演算により、i1番目の入力データ501を算出する。データ生成装置104は、正しいと判定した2つの読出データ504と、算出したi1番目の入力データ501とを、出力データ502として出力する。記憶装置102は、i1番目の入力データ501を記憶していた領域のデータを消去し、データ生成装置104が算出したi1番目の入力データ501を上書きして記憶する。なお、記憶装置102は、i1番目の入力データ501を記憶していた領域を使うのを止め、別の領域を使って、データ生成装置104が算出したi1番目の入力データ501を記憶する構成であってもよい。なお、データ生成装置104は、i1番目の3つ組データのうち、正しいと判定した2つの読出データ504、すなわち、i2番目の読出入力データと、i1番目の読出誤り検出データとに基づいて、i1番目の入力データ501を算出する構成であってもよい。あるいは、i番目の3つ組データに基づいてi1番目の入力データ501を算出するとともに、i1番目の3つ組データに基づいてi1番目の入力データ501を算出し、算出した2つのi1番目の入力データ501を比較することにより、間違った読出データ504の判定が正しいか否かを判定する構成であってもよい。算出した2つのi1番目の入力データ501が一致した場合、残りの4つの読出データ504は正しいことが判明する。したがって、i1番目の読出入力データが間違っていることが再確認できる。これに対して、算出した2つのi1番目の入力データ501が一致しない場合、残りの4つの読出データ504のなかに間違ったデータがあることが判明する。したがって、i1番目の読出入力データが間違っているという判定は、必ずしも正しくない。データ生成装置104は、2つの読出データ504が同時に間違っているという極めて稀な現象が発生したので訂正不可能であると判定する。しかし、データの記憶領域が図2に示した配置である場合、間違っている可能性のある3つの読出データ504のうちの2つが同時に間違っているとすれば、物理的に連続した領域であるi番目の誤り検出データ503を記憶した領域と、i1番目の誤り検出データ503を記憶した領域とから読み出した読出データ504が間違っていて、この2つの領域から物理的に離れた領域であるi1番目の入力データ501を記憶した領域から読み出した読出データ504は正しいと考えられる。そのため、データ生成装置104は、i番目及びi1番目の読出誤り検出データが間違っていると判定する構成であってもよい。その場合、データ生成装置104は、i番目の3つ組データのうち、正しいと判定した2つの読出データ504、すなわち、i番目の読出入力データと、i1番目の読出入力データとに基づいて、i番目の誤り検出データ503を算出する。また、データ生成装置104は、i1番目の3つ組データのうち、正しいと判定した2つの読出データ504、すなわち、i1番目の読出入力データと、i2番目の読出入力データとに基づいて、i1番目の誤り検出データ503を算出する。以上のように、信号処理装置100は、ソフトエラーの発生位置によらず、ソフトエラーを訂正することができる。また、信号処理装置100は、1ビット単位ではなく、基本データ幅単位でソフトエラーを訂正することができる。メモリ内の記憶領域の物理的な配置を工夫することにより、データの信頼性が向上する。物理的なメモリの数を増やす必要がないので、コスト増加や、パターン配線増加による基板面積の増大を防ぐことができる。すべての入力データ501は、2つずつの誤り検出データ503の算出に使われる。すなわち、すべての読出入力データは、2つの3つ組データに属する。このため、ある読出入力データが属する2つの3つ組データに整合性がない場合、信号処理装置100は、その読出入力データが間違っていると判断する。また、ある3つ組データに整合性がなく、その3つ組データに属する読出入力データが属するもう一つの3つ組データに整合性がある場合、信号処理装置100は、その読出入力データが正しいと判断する。整合性のない3つ組データに属する2つの読出入力データがいずれも正しいと判断した場合、信号処理装置100は、その3つ組データに属する残りの1つの読出データ504、すなわち、読出誤り検出データが間違っていると判断する。信号処理装置100は、例えば、赤外線撮像装置であり、上述した構成に加えて、撮像装置、オフセット測定装置、オフセット補正装置処理部などを有する。撮像装置は、複数の画素を有する撮像素子を有し、各画素の出力値を出力する。オフセット測定装置は、撮像装置が出力する各画素の出力値のオフセットを測定する。例えば、オフセット測定装置は、撮像装置が均一な熱分布を持つ被写体均一被写体を撮影したときに出力した各画素の出力値に基づいて、オフセットを測定する。信号処理装置100の記憶装置102は、各画素について測定されたオフセットを、入力データとして記憶する。信号処理装置100は、撮像素子の画素数と同じ数の出力オフセットを記憶する。オフセット補正装置は、撮像装置が実際の撮影対象を撮影したとき、撮像装置が出力した各画素の出力値から、データ生成装置104が出力データとして出力した出力オフセットを差し引くことにより、出力値を補正する。これにより、ざらつきが少なく、信号雑音比が高く、視認性の良い画像を得ることができ、赤外線撮像装置が撮影した画像に基づいて、形状認識や動体認識などの高度な信号処理の認識性能を高めることができる。信号処理装置100が記憶したデータの信頼性が高いことにより、正しく出力値を補正できるので、その後の信号処理の信頼性も高くなる。信号処理装置100は、3ビット以上の基本データ長のソフトエラーを訂正することができる。また、物理的に異なるメモリを用いる必要がないので、メモリパッケージの実装面積や、アドレスバス/データバスのパターン配線領域の面積が増大せず、基板サイズを小さくすることができ、コストの増大を防ぐことができる。実施の形態2.実施の形態2について、図5を用いて説明する。なお、実施の形態1と共通する部分については、同一の符号を付し、説明を省略する。この実施の形態における記憶装置102は、入力データ501を記憶する領域の配置が、実施の形態1と異なる。記憶装置102は、i番目の入力データと、i1番目の入力データとを、記憶装置102の物理的に離れた領域に記憶する。図5は、この実施の形態における記憶装置102が記憶するデータの配置の一例を示す図である。例えば、入力データ501の数Nが偶数であり、N=2nnは、2以上の整数。であるとする。記憶装置102は、i番目iは、1以上n以下の整数。の入力データ501を、偶数アドレスである2i-2番地に記憶する。また、記憶装置102は、in番目iは、1以上k以下の整数。を、奇数アドレスである2i-1番地に記憶する。これにより、i番目の入力データ501を記憶した領域と、i1番目の入力データ501を記憶した領域との間が離れるので、i番目の入力データ501を記憶した領域と、i1番目の入力データ501を記憶した領域とに、ソフトエラーが同時に発生する確率が、実施の形態1よりも更に低くなる。このように、入力データ501を離散的に配置することにより、連続する入力データ501に対してソフトエラーが発生する確率が更に低くなるので、データ訂正の信頼性が向上する。実施の形態3.実施の形態3について、図6~図10を用いて説明する。なお、実施の形態1及び実施の形態2と共通する部分については、同一の符号を付し、説明を省略する。図6は、この実施の形態における信号処理装置100Aのハードウェア構成の一例を示すハードウェア構成図である。信号処理装置100Aは、例えば、記憶装置102と、処理装置911と、入力装置912と、出力装置913とを有する。記憶装置102は、実施の形態1で説明した入力データ501や誤り検出データ503などのデータなどを記憶する。処理装置911は、記憶装置102とは別に設けた記憶装置図示せずが記憶したプログラムを実行することにより、データを処理し、信号処理装置100A全体を制御する。なお、処理装置911が実行するプログラムは、記憶装置102が記憶する構成であってもよい。入力装置912は、信号処理装置100Aの外部からの信号などを入力して、処理装置911が処理できるデータに変換する。入力装置912は、例えば、アナログ信号をデジタルデータに変換するアナログデジタル変換装置、シリアルデータをパラレルデータに変換するシリアルパラレル変換装置、他の装置が送信した信号を受信して復調する受信装置、他の装置が出力したデータを一時的に保持するバッファ装置などである。出力装置913は、処理装置911が処理したデータを変換して信号処理装置100Aの外部へ出力する。出力装置913は、例えば、デジタルデータをアナログ信号に変換するデジタルアナログ変換装置、パラレルデータをシリアルデータに変換するパラレルシリアル変換装置、搬送波を変調して他の装置に対して送信する送信装置、他の装置に対して出力するデータを一時的に保持するバッファ装置などである。実施の形態1では、信号処理装置100の機能ブロックをハードウェアによって実現する構成について説明したが、この実施の形態では、信号処理装置100Aの機能ブロックをソフトウェアによって実現する。すなわち、信号処理装置100Aの機能ブロックは、処理装置911がプログラムを実行することにより実現される。図7は、この実施の形態における信号処理装置100Aの機能ブロックの構成の一例を示すブロック構成図である。信号処理装置100Aデータ記憶装置は、入力部110と、演算部120と、記憶部130と、判定部140と、訂正部150と、出力部160とを有する。入力部110は、入力装置912を用いて、N個Nは、3以上の整数。の入力データ501を入力する。入力部110は、処理装置911を用いて、入力したN個の入力データ501を、演算部120や記憶部130に対して通知する。演算部120は、処理装置911を用いて、入力部110が通知したN個の入力データ501を取得する。演算部120は、処理装置911を用いて、取得したN個の入力データに基づいて、所定の演算により、N個の誤り検出データ503を算出する。演算部120は、処理装置911を用いて、算出したN個の誤り検出データ503を、記憶部130に対して通知する。記憶部130は、処理装置911を用いて、入力部110が通知したN個の入力データ501と、演算部120が通知したN個の誤り検出データ503と取得する。記憶部130は、記憶装置102を用いて、取得したN個の入力データ501とN個の誤り検出データ503とを記憶する。判定部140は、処理装置911を用いて、記憶部130が記憶したN個の入力データ501と、N個の誤り検出データ503とを読み出し、読み出した2N個のデータ読出データ504を取得する。判定部140は、処理装置911を用いて、取得した2N個の読出データ504に基づいて、記憶部130が記憶したデータの整合性を検査する。判定部140は、処理装置911を用いて、判定した判定結果505を、訂正部150に対して通知する。判定部140は、この検査を定期的に繰り返す。訂正部150は、処理装置911を用いて、判定部140が通知した判定結果を取得する。訂正部150は、処理装置911を用いて、取得した判定結果に基づいて、記憶部130が記憶したデータに整合性がないと判定部140が判定した場合に、どの読出データ504が誤っているかを特定する。訂正部150は、処理装置911を用いて、判定部140が取得した読出データ504に基づいて、特定した誤っている読出データ504について、もとの正しい入力データ501や誤り検出データ503を算出する。訂正部150は、処理装置911を用いて、算出した正しいデータ訂正データ506を、記憶部130に対して通知する。記憶部130は、処理装置911を用いて、訂正部150が通知した訂正データ506を取得する。記憶部130は、記憶装置102を用いて、取得した訂正データ506を記憶する。出力部160は、処理装置911を用いて、記憶部130が記憶したN個の入力データ501を読み出して、N個の読出データ504を取得する。出力部160は、取得した読出データ504を、出力データとして出力する。判定部140が定期的に検査を実施して訂正部150が訂正しているので、出力時には、データの整合性判定や訂正を行わない。なお、実施の形態1と同様に、出力時にも、データの整合性判定や訂正を行う構成であってもよい。演算部120が誤り検出データ503の算出に用いる演算は、実施の形態1と同様に、2つのデータから1つのデータを算出する演算であって、可逆性のある演算である。更に、この実施の形態では、ビット毎の排他的論理和やビット毎の同値演算など、ビット毎に独立した演算を用いる。図8は、この実施の形態における記憶装置102が記憶するデータの配置の一例を示す図である。記憶装置102は、入力データ501を偶数番地に記憶し、誤り検出データ503を奇数番地に記憶する。例えば、記憶装置102は、i番目iは、1以上N以下の整数。の入力データ501を、2i-2番地に記憶する。また、記憶装置102は、i番目iは、1以上N以下の整数。の誤り検出データ503を、2i-1番地に記憶する。演算部120は、処理装置911を用いて、例えば、i番目iは、1以上N以下の整数。の入力データ501と、ia番目ただし、iaがNより大きい場合は、ia-N番目の入力データ501とに基づいて、ib番目ただし、ibがNより大きい場合は、ib-N番目の誤り検出データ503を算出する。なお、aは、1以上N未満の所定の整数である。また、bは、1以上N未満の所定の整数であり、Na-1を2で割った商である。なお、Na-1が奇数の場合は、端数を切り上げてもよいし、切り捨ててもよい。例えば、N=16、a=3の場合、b=9である。すなわち、演算部120は、i番目の入力データ501と、i3番目の入力データ501とに基づいて、i9番目の誤り検出データ503を算出する。例えば、演算部120は、1番目の入力データ501と、4番目の入力データ501とに基づいて、10番目の誤り検出データ503を算出する。演算部120は、9番目の入力データ501と、12番目の入力データ501とに基づいて、2番目の誤り検出データ503を算出する。演算部120は、15番目の入力データ501と、2番目の入力データ501とに基づいて、8番目の誤り検出データ503を算出する。記憶装置102がi番目の入力データ501を記憶する領域のアドレス510は、2i-2番地である。また、記憶装置102がia番目の入力データ501を記憶する領域のアドレス510は、2i2a-2番地または2i2a-2N-2番地である。したがって、aがNの半分より小さい場合、i番目の入力データ501が記憶される領域と、ia番目の入力データ501が記憶される領域との間の物理的距離以下、単にi番目の入力データ501とia番目の入力データ501との間の物理的距離と呼ぶ。他も同じ。は、2a番地に相当する距離またはそれ以上である。また、記憶装置102がib番目の誤り検出データ503を記憶する領域のアドレス510は、2i2b-1番地または2i2b-2N-1番地である。Na-1が偶数の場合、2b=Na-1だから、記憶装置102がib番目の誤り検出データ503を記憶する領域のアドレス510は、2iaN-2番地または2ia-N-2番地である。したがって、i番目の入力データ501とib番目の誤り検出データ503との間の物理的距離は、N-a番地に相当する距離またはそれ以上である。また、ia番目の入力データ501とib番目の誤り検出データ503との間の物理的距離も、N-a番地に相当する距離またはそれ以上である。このように、Na-1が偶数の場合、i番目の入力データ501とib番目の誤り検出データ503との間の物理的距離の最小値と、ia番目の入力データ501とib番目の誤り検出データ503との間の物理的距離の最小値とは、同じになる。すなわち、いずれか一方に近いということはなく、両者から均等に離れている。このため、aは、Nが偶数の場合は奇数、Nが奇数の場合は偶数であることが望ましい。また、i番目の入力データ501とia番目の入力データ501との間の物理的距離2aと、i番目及びia番目の入力データ501とib番目の誤り検出データ503との間の物理的距離N-aとがほぼ同じになり、三者がほぼ均等に離れるのは、aがNの3分の1に近い値のときである。しかし、aがNの3分の1に近い値だと、i2a番目及びi-a番目の入力データ501とib番目の誤り検出データ503との間の物理的距離が近くなる。また、aがNの2分の1に近い値だと、i番目の入力データ501と、i2a番目の入力データ501との間の物理的距離が近くなる。このため、aは、Nの5分の1もしくは7分の3に近い値であることが望ましい。判定部140は、処理装置911を用いて、i番目iは、1以上N以下の整数。の読出入力データと、ia番目の読出入力データと、ib番目の読出誤り検出データとの3つ組データi番目の3つ組データに、整合性があるか否かを判定する。例えば、演算部120が使用する演算がビット毎の排他的論理和である場合、判定部140は、i番目の読出入力データと、ia番目の読出入力データと、ib番目の読出誤り検出データとの3つのデータのビット毎の排他的論理和を算出して、判定値とする。判定部140は、処理装置911を用いて、算出した判定値が0である場合に、3つ組データに整合性があると判定し、判定値が0でない場合に、3つ組データに整合性がないと判定する。3つ組データに整合性がないと判断した場合、判定部140は、更に、処理装置911を用いて、どのビットに整合性があり、どのビットに整合性がないかを判断する。演算部120が使用する演算がビット毎に独立した演算なので、整合性のあるビットと、整合性のないビットとを判別することができる。例えば、演算部120が使用する演算がビット毎の排他的論理和である場合、判定部140は、判定値のどのビットが1であるかを判定し、1であると判定したビットに整合性がないと判定する。訂正部150は、判定部140が3つ組データに整合性がないと判定した場合に、処理装置911を用いて、その3つ組データのうちのどの読出データ504のどのビットが間違っているかを判定する。例えば、訂正部150は、処理装置911を用いて、i番目の3つ組データに整合性があると判定部140が判定した場合、i番目の読出入力データと、ia番目の読出入力データとが、正しいと判定する。したがって、i番目の読出入力データは、i番目の3つ組データに整合性があれば正しいと判定され、また、i-a番目の3つ組データに整合性がある場合も正しいと判定される。また、訂正部150は、処理装置911を用いて、i番目の3つ組データに整合性がないと判定部140が判定した場合、i番目及びia番目の読出入力データについて、整合性があると判定部140が判定したビットは、少なくとも正しいと判定する。したがって、i番目の3つ組データに整合性がなく、かつ、i-a番目の3つ組データに整合性がない場合でも、i番目の3つ組データにおいて整合性がないと判定部140が判定したビットと、i-a番目の3つ組データにおいて整合性がないと判定部140が判定したビットとが共通していなければ、i番目の読出入力データは、正しいと判定される。訂正部150は、N個の3つ組データすべてについての判定部140の判定結果に基づいて、正しい読出入力データのビットを判定し、正しいと判定されずに残った読出入力データのビットが間違っていると判定する。すなわち、i番目の読出入力データは、i番目の3つ組データに整合性がなく、かつ、i-a番目の3つ組データにも整合性がなく、かつ、i番目の3つ組データにおいて整合性がないビットとi-a番目の3つ組データにおいて整合性がないビットとの間に共通するビットがある場合に、そのビットが間違っていると判定される。次に、訂正部150は、処理装置911を用いて、整合性がないと判定部140が判定した3つ組データにおいて整合性がないと判定されたビットについて、その3つ組データに属する2つの読出入力データのそのビットがともに正しいと判定した場合、その3つ組データに属する読出誤り検出データについて、そのビットが間違っていると判定する。訂正部150は、処理装置911を用いて、間違っていると判定したビットを訂正する。すなわち、訂正部150は、処理装置911を用いて、間違っていると判定した読出データ504について、間違っていると判定したビットを反転させる。記憶部130は、記憶装置102を用いて、訂正部150がビットを訂正した読出データ504を、入力データ501または誤り検出データ503として記憶する。図9は、この実施の形態における入力処理S610の流れの一例を示すフローチャート図である。入力処理S610において、信号処理装置100Aは、N個の入力データ501を入力し、N個の入力データ501とN個の誤り検出データ503とを記憶する。入力処理S610は、例えば、2つの初期化工程S611,S614と、2つの反復工程S612,S615と、入力工程S613と、演算工程S616とを有する。信号処理装置100Aは、入力処理S610を初期化工程S611から開始する。初期化工程S611において、入力部110は、処理装置911を用いて、整数iを0に初期化する。入力部110は、記憶装置102やその他の記憶装置を用いて、初期化した整数iを記憶する。反復工程S612において、入力部110は、処理装置911を用いて、整数iに1を加える。入力部110は、処理装置911を用いて、1を加えた整数iと、入力データ501の数Nとを比較する。整数iがN以下である場合、信号処理装置100Aは、入力工程S613へ処理を進める。整数iがNより大きい場合、信号処理装置100Aは、初期化工程S614へ処理を進める。入力工程S613において、入力部110は、入力装置912を用いて、i番目の入力データ501を入力する。記憶部130は、記憶装置102を用いて、入力部110が入力したi番目の入力データ501を記憶する。信号処理装置100Aは、反復工程S612に処理を戻す。初期化工程S614において、演算部120は、処理装置911を用いて、整数iを0に初期化する。演算部120は、記憶装置102やその他の記憶装置を用いて、初期化した整数iを記憶する。反復工程S615において、演算部120は、処理装置911を用いて、整数iに1を加える。演算部120は、処理装置911を用いて、1を加えた整数iと、入力データ501の数Nとを比較する。整数iがN以下である場合、信号処理装置100Aは、演算工程S616へ処理を進める。整数iがNより大きい場合、信号処理装置100Aは、入力処理S610を終了する。演算工程S616において、演算部120は、処理装置911を用いて、入力工程S613で記憶部130が記憶したi番目の入力データ501とia番目の入力データ501とに基づいて、ib番目の誤り検出データ503を算出する。例えば、演算部120は、i番目の入力データ501とia番目の入力データ501とのビット毎の排他的論理和をとり、ib番目の誤り検出データ503とする。記憶部130は、記憶装置102を用いて、演算部120が算出したib番目の誤り検出データ503を記憶する。信号処理装置100Aは、反復工程S615に処理を戻す。図10は、この実施の形態における訂正処理S620の流れの一例を示すフローチャート図である。訂正処理S620において、信号処理装置100Aは、記憶装置102が記憶したデータのなかから間違ったデータを探して訂正する。訂正処理S620は、例えば、3つの初期化工程S621,S624,S627と、3つの反復工程S622,S625,S628と、設定工程S623と、判定工程S626と、訂正工程S629とを有する。信号処理装置100Aは、訂正処理S620を初期化工程S621から開始する。初期化工程S621において、訂正部150は、処理装置911を用いて、整数iを0に初期化する。訂正部150は、記憶装置102やその他の記憶装置を用いて、初期化した整数iを記憶する。反復工程S622において、訂正部150は、処理装置911を用いて、整数iに1を加える。訂正部150は、処理装置911を用いて、1を加えた整数iと、入力データ501の数Nとを比較する。整数iがN以下である場合、信号処理装置100Aは、設定工程S623へ処理を進める。整数iがNより大きい場合、信号処理装置100Aは、初期化工程S624へ処理を進める。設定工程S623において、訂正部150は、処理装置911を用いて、i番目の読出入力データのビットの正誤を表わすデータ以下i番目の読出入力正誤データと呼ぶ。他も同じ。を、すべてのビットが間違っていることを表わすデータに初期化する。訂正部150は、記憶装置102やその他の記憶装置を用いて、初期化した読出入力正誤データを記憶する。信号処理装置100Aは、反復工程S622に処理を戻す。初期化工程S624において、判定部140は、処理装置911を用いて、整数iを0に初期化する。判定部140は、記憶装置102やその他の記憶装置を用いて、初期化した整数iを記憶する。反復工程S625において、判定部140は、処理装置911を用いて、整数iに1を加える。判定部140は、処理装置911を用いて、1を加えた整数iと、入力データ501の数Nとを比較する。整数iがN以下である場合、信号処理装置100Aは、判定工程S626へ処理を進める。整数iがNより大きい場合、信号処理装置100Aは、初期化工程S627へ処理を進める。判定工程S626において、判定部140は、処理装置911を用いて、i番目の3つ組データの整合性を判定する。訂正部150は、処理装置911を用いて、判定部140の判定結果に基づいて、i番目及びi-a番目の読出入力正誤データを更新する。信号処理装置100Aは、反復工程S625に処理を戻す。初期化工程S627において、訂正部150は、処理装置911を用いて、整数iを0に初期化する。訂正部150は、記憶装置102やその他の記憶装置を用いて、初期化した整数iを記憶する。反復工程S628において、訂正部150は、処理装置911を用いて、整数iに1を加える。訂正部150は、処理装置911を用いて、1を加えた整数iと、入力データ501の数Nとを比較する。整数iがN以下である場合、信号処理装置100Aは、訂正工程S629へ処理を進める。整数iがNより大きい場合、信号処理装置100Aは、訂正処理S620を終了する。訂正工程S629において、訂正部150は、処理装置911を用いて、i番目の読出入力正誤データに基づいて、i番目の読出入力データのビットのうち間違っているビットを反転させる。記憶部130は、訂正部150が反転させたビットがある場合、記憶装置102を用いて、訂正部150がビットを反転させたi番目の読出入力データを、i番目の入力データ501として記憶する。また、訂正部150は、処理装置911を用いて、i番目及びia番目の読出入力正誤データと、判定工程S626で判定部140が判定したi番目の3つ組データの整合性とに基づいて、ib番目の読出誤り検出データのビットのうち間違っているビットを反転させる。記憶部130は、訂正部150が反転させたビットがある場合、記憶装置102を用いて、訂正部150がビットを反転させたib番目の読出誤り検出データを、ib番目の誤り検出データ503として記憶する。信号処理装置100Aは、反復工程S628に処理を戻す。訂正処理S620の各工程の具体的処理について、演算部120が使用する演算がビット毎の排他的論理和であり、入力データ501のビット長が8ビットである場合を例に説明する。設定工程S623において、訂正部150は、処理装置911を用いて、i番目の読出入力正誤データを0xFF=11111111に初期化する。判定工程S626において、判定部140は、処理装置911を用いて、記憶装置102が記憶したデータから、i番目の読出入力データと、ia番目の読出入力データと、ib番目の読出誤り訂正データとを取得する。判定部140は、処理装置911を用いて、取得した3つの読出データ504のビッド毎の排他的論理和を算出して、i番目の判定値とする。この判定値は、立っているビットが、その3つ組データにおいて整合性のないビットを表わす。訂正部150は、処理装置911を用いて、i番目の読出入力正誤データと、算出したi番目の判定値とのビット毎の論理積をとることにより、i番目の読出入力正誤データを更新する。また、訂正部150は、処理装置911を用いて、i-a番目の読出入力正誤データと、算出したi番目の判定値とのビット毎の論理積をとることにより、i-a番目の読出入力正誤データを更新する。訂正工程S629において、i番目の読出入力正誤データが0でない場合、訂正部150は、処理装置911を用いて、i番目の読出入力データとi番目の読出入力正誤データとのビット毎の排他的論理和を算出して、訂正済データとし、記憶部130は、記憶装置102を用いて、訂正部150が算出した訂正済データを、i番目の入力データ501として記憶する。また、訂正部150は、処理装置911を用いて、i番目の読出し入力正誤データとia番目の読出入力正誤データとのビット毎の排他的論理和を算出し、算出したビット毎の排他的論理和のビット毎の否定と、判定部140が算出したi番目の判定値とのビット毎の論理積を算出して、読出誤り検出正誤データとする。算出した読出誤り検出正誤データが0でない場合、訂正部150は、処理装置911を用いて、ib番目の読出誤り検出データと、算出した読出誤り検出正誤データとのビット毎の排他的論理和を算出して、訂正済データとし、記憶部130は、記憶装置102を用いて、訂正部150が算出した訂正済データを、ib番目の誤り検出データ503として記憶する。1つの3つ組データに属する2つ以上の読出データ504が間違っているという極めて稀な事態が発生した場合でも、3つ組データは、記憶装置102のなかで物理的に離れた領域に記憶されていたデータなので、同じビットが間違っていることはあり得ないと言ってよい。このため、3つ組データの整合性をビット毎に判定することにより、データ訂正の信頼性が更に向上する。なお、判定部140による検査の間隔は、あらかじめ想定されるソフトエラーの発生頻度に基づいてあらかじめ定めておく構成であってもよいし、検出したエラーの頻度に基づいて、検査の間隔を調整する構成であってもよい。例えば、1回の検査でエラーを検出しなかった場合は、判定部140が、次の検査までの待機時間を少し長くし、逆に、1回の検査で1つ以上のエラーを検出した場合は、判定部140が、次の検査までの待機時間を少し短くすることにより、1回の検査で検出するエラーの数の平均値が1未満になるよう、検査の間隔を最適化する。実施の形態4.実施の形態4について、説明する。なお、実施の形態1~実施の形態3と共通する部分については、同一の符号を付し、説明を省略する。この実施の形態における信号処理装置100Aの構成は、実施の形態3と同様なので、異なる点のみ説明する。演算部120は、例えば2進数の加算など、可逆性があり、ビット毎に独立してはいない演算を用いる。演算部120がビット毎に独立していない演算を用いる場合でも、実施の形態3と同様に、3つ組データの整合性をビット毎に判定することができる。以下、演算部120が用いる演算が2進数の加算である場合を例として説明する。演算部120は、処理装置911を用いて、i番目の入力データ501と、ia番目の入力データ501との和を算出する。記憶部130は、記憶装置102を用いて、演算部120が算出した和を、ib番目の誤り検出データ503として記憶する。なお、誤り検出データ503のビット数は、入力データ501のビット数より1ビット多くてもよいし、入力データ501のビット数と同じであってもよい。誤り検出データ503のビット数が入力データ501のビット数と同じ場合、最上位ビットで繰り上がりが発生するとこれを捨てることになるが、可逆性は満たされる。判定部140は、処理装置911を用いて、i番目の読出入力データと、ia番目の読出入力データとの和から、ib番目の読出誤り検出データを差し引いた差を算出して、i番目の判定値とする。判定部140は、算出した判定値が0である場合、この3つ組データに整合性があると判定する。ここで、3つの読出データ504のうちの1つについて1ビットのビット反転が発生した場合について考える。i番目の入力データ501において0であったビットが、i番目の読出入力データにおいて1になった場合、判定値は、2kただし、kは、最下位ビットを0として、ビット反転したビットの番号。になる。i番目の入力データ501において1であってビットが、i番目の読出入力データにおいて0になった場合、判定値は、-2kになる。ia番目の読出入力データにビット反転が発生した場合も同様であり、0が1になった場合、判定値は2kになり、1が0になった場合、判定値は-2kになる。ib番目の読出誤り検出データにビット反転が発生した場合は、逆に、0が1になった場合、判定値は-2kになり、1が0になった場合、判定値は2kになる。判定部140は、算出した判定値が0でない場合、処理装置911を用いて、算出した判定値が2kまたは-2kであるか否かkは、0以上、入力データ501のビット数未満の整数。を判定する。算出した判定値が2kまたは-2kである場合、判定部140は、3つ組データのk番ビットに整合性がなく、それ以外のビットには整合性があると判定する。なお、判定値が2kであるか、-2kであるかによって、0が1になったのか、1が0になったのかを区別できるので、訂正部150がこの情報を利用する構成としてもよい。例えば、判定部140が算出したi番目の判定値が2kである場合、読出入力データのk番ビットが0から1になったか、読出誤り検出データのk番ビットが1から0になったかのいずれかである。例えば、i番目の読出入力データのk番ビットが0、ia番目の読出入力データのk番ビットが1、ib番目の読出誤り検出データのk番ビットが1であれば、ビット反転が発生したのはia番目の読出入力データのk番ビットであることがわかる。したがって、訂正部150は、ia番目の読出入力データのk番ビットが間違っていると判定する。稀ではあるが、3つの読出データ504のビットのうち2ビットにビット反転が発生した場合、判定値は2k12k2ただし、k1,k2は、ビット反転したビットの番号。、2k1-2k2、-2k12k2、-2k1-2k2のうちのいずれかになる。判定部140は、算出した判定値が0でなく、2kでも-2kでもない場合、処理装置911を用いて、算出した判定値が上記4つの値のうちのいずれかであるか否かを判定する。判定値が上記4つの値のうちのいずれかである場合、判定部140は、3つ組データのk1番ビットとk2番ビットとに整合性がなく、それ以外のビットには整合性があると判定する。ビット反転が発生したビットが3ビット以上の場合も同様にして判定可能である。このように、演算部120が用いる演算がビット毎に独立した演算でない場合であっても、3つ組データの整合性をビット毎に判定することができ、これにより、データ訂正の信頼性が向上する。実施の形態5.実施の形態5について、図11~図12を用いて説明する。なお、実施の形態1~実施の形態4と共通する部分については、同一の符号を付し、説明を省略する。この実施の形態における信号処理装置100Aの構成は、実施の形態3と同様なので、異なる点のみ説明する。なお、入力データ501の数Nは、偶数であり、N=2nnは、2以上の整数。であるものとする。演算部120は、処理装置911を用いて、算出した2n個の誤り検出データ503に基づいて、所定の演算により、n個の二階検出データを算出する。演算部120が二階検出データの算出に用いる演算は、誤り検出データ503の算出に用いる演算と同様、可逆性を有する。演算部120が二階検出データの算出に用いる演算は、誤り検出データ503の算出に用いる演算と同じ演算であってもよいし、異なる演算であってもよい。なお、演算部120が誤り検出データ503や二階検出データの算出に用いる演算は、ビット毎に独立した演算であってもよいし、ビット毎に独立した演算でなくてもよい。図11は、この実施の形態における記憶装置102が記憶するデータの配置の一例を示す図である。記憶装置102は、記憶領域を5番地ごとに分けた領域のそれぞれについて、最初の番地と3番目の番地に入力データ501を記憶し、2番目の番地と4番目の番地に誤り検出データ503を記憶し、最後の番地に二階検出データを記憶する。例えば、記憶装置102は、2j-1番目jは、1以上n以下の整数。の入力データ501を5j-4番地に記憶し、2j番目の入力データ501を5j-2番地に記憶する。また、記憶装置102は、2j-1番目jは、1以上n以下の整数。の誤り検出データ503を5j-3番地に記憶し、2j番目の誤り検出データ503を5j-1番地に記憶する。記憶装置102は、j番目の二階検出データを5j番地に記憶する。演算部120は、処理装置911を用いて、例えば、2j番目jは、1以上n以下の整数。の誤り検出データ503と、2j2c-1番目ただし、2j2c-1がNより大きい場合は、2j2c-1-N番目。の誤り検出データ503とに基づいて、jd番目ただし、jdがnより大きい場合は、jd-n番目。の二階検出データを算出する。なお、cは、1以上n未満の所定の整数である。また、dは、1以上n未満の所定の整数であり、ncを2で割った商である。なお、ncが奇数の場合は、端数を切り捨てる。例えば、N=16すなわち、n=8、c=3の場合、d=5である。すなわち、演算部120は、2j番目の誤り検出データ503と、2j5番目の誤り検出データ503とに基づいて、j5番目の二階検出データを算出する。なお、演算部120が1つの二階検出データを算出するのに用いる2つの誤り検出データ503は、算出のもととなる入力データ501に共通するものがない。すなわち、演算部120は、2つの入力データ501から算出した誤り検出データ503と、その2つのいずれとも異なる2つの入力データ501から算出した誤り検出データ503とに基づいて、1つの二階検出データを算出する。1つの二階検出データのもととなる4つの入力データ501は、記憶装置102において、なるべく離れた領域に記憶されるものであることが望ましい。整数cの値は、この条件を満たすように設定する。整数cは、整数nの3分の1に近い値であることが望ましい。判定部140は、処理装置911を用いて、2j番目jは、1以上n以下の整数。の読出誤り検出データと、2j2c-1番目の読出誤り検出データと、記憶装置102がjd番目の二階検出データを記憶した領域から読み出したデータ以下jd番目の読出二階検出データと呼ぶ。他も同じ。との3つのデータ以下j番目の二階3つ組データと呼ぶ。他も同じ。の間の整合性を検証する。すなわち、判定部140は、演算部120がjd番目の二階検出データの算出に使用した演算により、2j番目の読出誤り検出データと、2j2c-1番目の読出し誤り検出データとに基づいて算出されるデータと、jd番目の読出二階検出データとが一致するか否かを判定する。すべての誤り検出データ503は、それぞれ、必ずどれか1つの二階検出データの算出に用いられる。したがって、すべての読出誤り検出データは、それぞれ、どれか1つの3つ組データと、どれか1つの二階3つ組データとに属する。訂正部150は、処理装置911を用いて、判定部140の判定結果に基づいて、間違っている読出データ504を特定する。ある3つ組データに整合性がないと判定部140が判定し、その3つ組データに属する2つの読出入力データが属する他の2つの3つ組データには整合性があると判定部140が判定した場合、訂正部150は、その3つ組データに属する読出誤り検出データが間違っていると判定する。訂正部150は、その3つ組データに属する2つの読出入力データに基づいて、演算部120と同じ演算により、誤り検出データ503を算出する。また、その読出誤り検出データが属する二階三つ組データについて、整合性の有無に関わらず、算出し直した誤り検出データ503に基づいて、演算部120と同じ演算により、二階検出データを算出する。記憶部130は、記憶装置102を用いて、訂正部150が算出した誤り検出データ503と二階検出データとを記憶する。図12は、この実施の形態における訂正部150による判定の一例を示す図である。丸は、読出入力データを表わす。菱形は、読出誤り検出データを表わす。六角形は、読出二階検出データを表わす。破線は、3つ組データまたは二階3つ組データを表わす。網掛けは、整合性があると判定された3つ組データまたは二階3つ組データを表わす。なお、この例において、整数aは偶数であり、ib=2jであるものとする。ある3つ組データに整合性がないと判定部140が判定し、その3つ組データに属する2つの読出入力データのいずれかが属する3つ組データにも整合性がないと判定部140が判定し、その2つの3つ組データにそれぞれ属する2つの読出誤り検出データが属する2つの二階3つ組データのうちの少なくともいずれかに整合性があると判定部140が判定した場合、訂正部150は、その2つの3つ組データに共通して属する読出入力データが間違っていると判定する。訂正部150は、整合性がある二階3つ組データに属する読出誤り検出データが属する3つ組データのうち、間違っていると判定した読出入力データ以外の2つの読出データ504に基づいて、演算部120が使った演算の逆演算により、入力データ501を算出する。訂正部150は、もう一方の3つ組データのうち、正しいと判定した読出入力データと、算出した入力データ501とに基づいて、演算部120と同じ演算により、誤り検出データ503を算出する。訂正部150は、正しいと判定した読出誤り検出データと、算出した誤り検出データ503とに基づいて、演算部120と同じ演算により、二階検出データを算出する。記憶部130は、記憶装置102を用いて、訂正部150が算出した入力データ501と、誤り検出データ503と、二階検出データとを記憶する。例えば、i番目及びia番目の3つ組データに整合性がなく、ia番目の3つ組データに属する2ja番目の読出誤り検出データが属するja/2番目の二階3つ組データには整合性がある場合、訂正部150は、ia番目の3つ組データに属するi2a番目の読出入力データi2a番目の3つ組データの整合性により正しいと判定されていると2ja番目の読出誤り検出データja/2番目の二階3つ組データの整合性により正しいと判定されているとに基づいて、ia番目の入力データ501を算出する。これにより、ia番目の3つ組データの不整合が解消される。次に、訂正部150は、i番目の3つ組データに属するi番目の読出入力データと、算出したia番目の入力データ501とに基づいて、2j番目の誤り検出データ503を算出する。これにより、i番目の3つ組データの不整合が解消される。最後に、訂正部150は、2j番目の読出誤り検出データが属するj番目の二階3つ組データに属する2j2c-1番目の読出誤り検出データと、算出した2j番目の誤り検出データとに基づいて、jd番目の二階誤り検出データを算出する。これにより、j番目の二階3つ組データに不整合があったとしても、解消される。また、ある二階3つ組データに整合性がないと判定部140が判定し、その二階3つ組データに属する2つの読出誤り検出データがそれぞれ属する2つの3つ組データには整合性があると判定部140が判定した場合、訂正部150は、その二階3つ組データに属する読出二階検出データが間違っていると判定する。訂正部150は、その二階3つ組データに属する2つの読出誤り検出データに基づいて、演算部120と同じ演算により、二階3つ組データを算出する。記憶部130は、記憶装置102を用いて、訂正部150が算出した二階3つ組データを記憶する。このようにして、読出誤り検出データの正しさを、3つ組データの整合性に基づいて判定するだけでなく、二階3つ組データの整合性に基づいても判定する。これにより、1つの3つ組データに属する2つ以上の読出データ504に異常が起きるという極めて稀な事象が発生した場合でも、間違っている読出データ504を特定し、訂正することができる。以上各実施の形態で説明した構成は一例であり、他の構成であってもよい。例えば、異なる実施の形態で説明した構成を組み合わせた構成としてもよいし、本質的でない部分の構成を他の構成で置き換えた構成としてもよい。以上説明したデータ記憶装置信号処理装置100;100Aは、データを記憶する記憶装置102と、入力部110と、演算部120;演算装置101と、記憶部120;R/W制御装置103と、判定部140;データ生成装置104と、訂正部150;データ生成装置104とを有する。上記入力部は、複数の入力データ501を入力する。上記演算部は、所定の演算により、上記入力部が入力した複数の入力データに基づいて、誤り検出データ503を算出する。上記記憶部は、上記記憶装置を用いて、上記入力部が入力した複数の入力データと、上記演算部が算出した誤り検出データとを記憶する。上記判定部は、上記演算部が上記誤り検出データの算出に用いた演算により上記記憶装置が記憶した複数の入力データから算出されるデータと、上記記憶装置が記憶した誤り検出データとが一致するか否かを判定する。上記訂正部は、上記記憶装置が記憶した複数の入力データから算出されるデータと上記記憶装置が記憶した誤り検出データとが一致しないと上記判定部が判定した場合に、上記記憶装置が記憶した複数の入力データと上記記憶装置が記憶した誤り検出データとのうちから、誤っているデータを特定し、誤っていると特定したデータについて、正しいデータを算出する。これにより、ソフトエラーの影響などにより、記憶装置が記憶したデータが変わってしまった場合に、そのことを検出して、入力部が入力した入力データや演算部が算出した誤り検出データを復元することができる。上記演算部120;演算装置101は、所定の演算により、上記入力部110が入力した2つの入力データ501から1つの誤り検出データ503を算出する。上記記憶部130;R/W制御装置103は、上記演算部が算出した誤り検出データと、上記演算部が上記誤り検出データの算出に用いた2つの入力データとを、上記記憶装置102の物理的に離れた領域を用いて記憶する。これにより、記憶装置が記憶した入力データと記憶装置が記憶した誤り検出データとが同時にソフトエラーなどの影響を受ける可能性が極めて低くなるので、エラー検出及び訂正の信頼性が向上する。上記演算部120;演算装置101は、所定の演算により、上記入力部110が入力した2つの入力データ501から1つの誤り検出データ503を算出する。上記記憶部130;R/W制御装置103は、上記演算部が1つの誤り検出データの算出に用いた2つの入力データを、上記記憶装置102の物理的に離れた領域を用いて記憶する。これにより、記憶装置が記憶した2つの入力データが同時にソフトエラーなどの影響を受ける可能性が極めて低くなるので、エラー検出及び訂正の信頼性が向上する。上記入力部110は、3つ以上の入力データ501を入力する。上記演算部120;演算装置101は、所定の演算により、上記入力部が入力した第一の入力データと上記入力部が入力した第二の入力データとから第一の誤り検出データ503を算出する。上記演算部は、所定の演算により、上記入力部が入力した上記第二の入力データと上記入力部が入力した第三の入力データとから第二の誤り検出データを算出する。上記訂正部150;データ生成装置104は、上記記憶装置102が記憶した第一の入力データと上記記憶装置が記憶した第二の入力データとから算出されるデータと上記記憶装置が記憶した第一の誤り検出データとが一致しないと上記判定部が判定し、かつ、上記記憶装置が記憶した第二の入力データと上記記憶装置が記憶した第三の入力データとから算出されるデータと上記記憶装置が記憶した第二の誤り検出データとが一致しないと上記判定部140;データ生成装置104が判定した場合に、上記記憶装置が記憶した第二の入力データが誤っていると判定し、上記記憶装置が記憶した第一の入力データと上記記憶装置が記憶した第一の誤り検出データとに基づいて、上記演算部が上記第一の誤り検出データの算出に用いた演算の逆演算により、正しい第二の入力データを算出する。これにより、ソフトエラーの影響などにより、記憶装置が記憶した第二の入力データが変わってしまった場合に、そのことを検出して、入力部が入力した第二の入力データを復元することができる。上記入力部110は、4つ以上の入力データ501を入力する。上記演算部120;演算装置101は、所定の演算により、上記入力部が入力した第一の入力データと上記入力部が入力した第二の入力データとから第一の誤り検出データを算出する。上記演算部は、所定の演算により、上記入力部が入力した上記第二の入力データと上記入力部が入力した第三の入力データとから第二の誤り検出データを算出する。上記演算部は、所定の演算により、上記入力部が入力した第三の入力データと第四の入力データとから第三の誤り検出データ503を算出する。上記訂正部150;データ生成装置104は、上記記憶装置102が記憶した第一の入力データと上記記憶装置が記憶した第二の入力データとから算出されるデータと上記記憶装置が記憶した第一の誤り検出データとが一致すると上記判定部が判定し、かつ、上記記憶装置が記憶した第二の入力データと上記記憶装置が記憶した第三の入力データとから算出されるデータと上記記憶装置が記憶した第二の誤り検出データとが一致しないと上記判定部が判定し、かつ、上記記憶装置が記憶した第三の入力データと上記記憶装置が記憶した第四の入力データとから算出されるデータと上記記憶装置が記憶した第三の誤り検出データとが一致すると上記判定部140;データ生成装置104が判定した場合に、上記記憶装置が記憶した第二の誤り検出データが誤っていると判定し、上記記憶装置が記憶した第二の入力データと上記記憶装置が記憶した第三の入力データとに基づいて、上記演算部が上記第二の誤り検出データの算出に用いた演算により、正しい第二の誤り検出データを算出する。これにより、ソフトエラーの影響などにより、記憶装置が記憶した第二の誤り検出データが変わってしまった場合に、そのことを検出して、演算部が算出した第二の誤り入力データを復元することができる。上記データ記憶装置信号処理装置100;100Aは、更に、出力部160を有する。上記出力部は、上記記憶装置102が記憶した入力データのうち、誤っていると上記訂正部150;データ生成装置104が判定した入力データについて、上記訂正部が算出した入力データを出力し、誤っていると上記訂正部が判定しなかった入力データについて、上記記憶装置が記憶した入力データを出力する。これにより、ソフトエラーの影響などにより、記憶装置が記憶した入力データが変わってしまった場合でも、正しい入力データを出力することができる。上記データ記憶装置信号処理装置100;100Aは、更に、出力部160を有する。上記記憶部130;R/W制御装置103は、上記訂正部150;データ生成装置104が誤っていると判定したデータについて、上記記憶装置102を用いて、上記訂正部が算出した正しいデータを記憶する。上記出力部は、上記記憶装置が記憶した入力データを出力する。これにより、ソフトエラーの影響などにより、記憶装置が記憶したデータが変わってしまった場合でも、正しい入力データを出力することができる。以上説明したデータ処理装置赤外線撮像装置は、上記データ記憶装置信号処理装置100;100Aと、上記データ記憶装置の出力部160が出力した入力データ出力データ102に基づいて、データ処理をする処理部オフセット補正装置とを有する。これにより、信頼性の高いデータ処理をすることができる。データ記憶装置信号処理装置100;100Aは、記憶装置102と、記憶装置にデータを記憶させたり記憶装置からデータを読み出したりする機能ブロックとを有する。このうち記憶装置は、物理的な装置である。これに対して、記憶装置以外の部分は、ロジック回路などのハードウェアにより構成した物理的な装置であってもよいし、コンピュータがプログラムを実行するなどしてソフトウェア的に構成したものであってもよい。また、データ記憶装置は、物理的に1つの装置でなくてもよく、以上説明した機能を複数の装置が分担して実現し、複数の装置が集まったシステム全体として、データ記憶装置として機能するものであってもよい。また、赤外線撮像装置などのデータ処理装置において、データ記憶装置信号処理装置100;100Aと、それ以外の部分とは、物理的に異なる装置であってもよいし、物理的に同じ装置であってもよい。例えば、データ記憶装置の機能ブロックを実現するプログラムを実行するコンピュータが、オフセット測定装置やオフセット補正装置などの処理部の機能ブロックを実現するプログラムを並行して実行する構成であってもよい。以上説明したデータ記憶装置は、特に、記憶装置が半導体メモリであり、宇宙線などの影響により発生するソフトエラー対策として有効である。ソフトエラーは、基本的にビット単位で発生し、物理的に離れた記憶領域で同時に発生する可能性が極めて低いからである。このため、データ記憶装置は、特に、宇宙空間や高地などソフトエラーの発生確率が高い場所で使用される場合に、好適である。しかし、以上説明したデータ記憶装置は、ソフトエラー対策に限らず、それ以外のエラーに対しても、同様に有効である。"