(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムによって処理されるアプリケーションデータを記憶するアプリケーションデータ記憶部と、
前記アプリケーションデータのビット反転エラーを検出するときに使用される誤り検出符号と前記アプリケーションデータのビット反転エラーを訂正するときに使用される誤り訂正符号とを前記アプリケーションデータに対応付けて記憶する誤り検出訂正符号記憶部と、
前記アプリケーションデータが更新されたか否かを示す更新情報を記憶する更新情報記憶部と、
前記アプリケーションデータの更新を検出し、前記アプリケーションデータが更新されたことを前記更新情報に設定する更新検出部と、
前記アプリケーションプログラムより低い優先度で動作し、前記アプリケーションプログラムが実行されていないときに前記更新情報に基づいて前記アプリケーションデータが更新されたか否かを判定し、前記アプリケーションデータが更新されたと判定した場合、更新されたアプリケーションデータに基づいて前記誤り検出符号と前記誤り訂正符号とを更新し、前記アプリケーションデータが更新されなかったと判定した場合、前記アプリケーションデータに基づいて新たな誤り検出符号を生成し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されたか否かを前記更新情報に基づいて判定し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されたと判定した場合、更新されたアプリケーションデータに基づいて前記誤り検出符号と前記誤り訂正符号とを更新し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されなかったと判定した場合、前記アプリケーションデータにビット反転エラーが発生したか否かを前記新たな誤り検出符号と前記誤り検出符号とに基づいて判定し、前記アプリケーションデータにビット反転エラーが発生したと判定した場合、前記アプリケーションデータのビット反転エラーを前記誤り訂正符号に基づいて訂正するエラーチェック部と
を備えたことを特徴とするエラーチェック装置。
【請求項２】
前記エラーチェック装置は、ビット反転エラーを訂正するエラーチェック機能を有するエラーチェック機能有りメモリとビット反転エラーを訂正するエラーチェック機能を有さないエラーチェック機能無しメモリとを備え、
前記エラーチェック機能有りメモリは前記誤り検出訂正符号記憶部を備え、
前記エラーチェック装置は、
前記アプリケーションプログラムが終了した後に前記エラーチェック機能有りメモリの前記誤り検出訂正符号記憶部に記憶されている誤り訂正符号を前記エラーチェック機能無しメモリに保存し、前記アプリケーションプログラムが開始される前に前記エラーチェック機能無しメモリに保存されている誤り訂正符号を前記エラーチェック機能有りメモリの前記誤り検出訂正符号記憶部に記憶する誤り訂正符号保存部を備える
ことを特徴とする請求項１記載のエラーチェック装置。
【請求項３】
前記誤り検出訂正符号記憶部は、前記アプリケーションデータのビット反転エラーを検出するときと前記アプリケーションデータのビット反転エラーを訂正するときに使用される誤り訂正符号を記憶し、
前記エラーチェック部は、前記アプリケーションプログラムが開始される前に前記アプリケーションデータにビット反転エラーが発生したか否かを前記誤り検出訂正符号記憶部に記憶された誤り訂正符号に基づいて判定し、前記アプリケーションデータにビット反転エラーが発生したと判定した場合、前記アプリケーションデータのビット反転エラーを前記誤り訂正符号に基づいて訂正する
ことを特徴とする請求項２記載のエラーチェック装置。
【請求項４】
前記エラーチェック部は、前記アプリケーションプログラムが開始される前に前記アプリケーションデータに基づいて誤り検出符号を生成し、生成した誤り検出符号を前記誤り検出訂正符号記憶部に記憶する
ことを特徴とする請求項３記載のエラーチェック装置。
【請求項５】
アプリケーションデータ記憶部が、アプリケーションプログラムによって処理されるアプリケーションデータを記憶し、
誤り検出訂正符号記憶部が、前記アプリケーションデータのビット反転エラーを検出するときに使用される誤り検出符号と前記アプリケーションデータのビット反転エラーを訂正するときに使用される誤り訂正符号とを前記アプリケーションデータに対応付けて記憶し、
更新情報記憶部が、前記アプリケーションデータが更新されたか否かを示す更新情報を記憶し、
更新検出部が、前記アプリケーションデータの更新を検出し、前記アプリケーションデータが更新されたことを前記更新情報に設定し、
エラーチェック部が、前記アプリケーションプログラムより低い優先度で動作し、前記アプリケーションプログラムが実行されていないときに前記更新情報に基づいて前記アプリケーションデータが更新されたか否かを判定し、前記アプリケーションデータが更新されたと判定した場合、更新されたアプリケーションデータに基づいて前記誤り検出符号と前記誤り訂正符号とを更新し、前記アプリケーションデータが更新されなかったと判定した場合、前記アプリケーションデータに基づいて新たな誤り検出符号を生成し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されたか否かを前記更新情報に基づいて判定し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されたと判定した場合、前記アプリケーションデータに基づいて前記誤り検出符号と前記誤り訂正符号とを更新し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されなかったと判定した場合、前記アプリケーションデータにビット反転エラーが発生したか否かを前記新たな誤り検出符号と前記誤り検出符号とに基づいて判定し、前記アプリケーションデータにビット反転エラーが発生したと判定した場合、前記アプリケーションデータのビット反転エラーを前記誤り訂正符号に基づいて訂正する
ことを特徴とするエラーチェック方法。
【請求項６】
アプリケーションデータ記憶部と、誤り検出訂正符号記憶部と、更新情報記憶部とを利用するエラーチェックプログラムであって、
前記アプリケーションデータ記憶部は、アプリケーションプログラムによって処理されるアプリケーションデータを記憶する記憶部であり、
前記誤り検出訂正符号記憶部は、前記アプリケーションデータのビット反転エラーを検出するときに使用される誤り検出符号と前記アプリケーションデータのビット反転エラーを訂正するときに使用される誤り訂正符号とを前記アプリケーションデータに対応付けて記憶する記憶部であり、
前記更新情報記憶部は、前記アプリケーションデータが更新されたか否かを示す更新情報を記憶する記憶部であり、
前記アプリケーションデータの更新を検出し、前記アプリケーションデータが更新されたことを前記更新情報に設定する更新検出処理と、
前記アプリケーションプログラムより低い優先度で動作し、前記アプリケーションプログラムが実行されていないときに前記更新情報に基づいて前記アプリケーションデータが更新されたか否かを判定し、前記アプリケーションデータが更新されたと判定した場合、更新されたアプリケーションデータに基づいて前記誤り検出符号と前記誤り訂正符号とを更新し、前記アプリケーションデータが更新されなかったと判定した場合、前記アプリケーションデータに基づいて新たな誤り検出符号を生成し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されたか否かを前記更新情報に基づいて判定し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されたと判定した場合、前記アプリケーションデータに基づいて前記誤り検出符号と前記誤り訂正符号とを更新し、新たな誤り検出符号を生成していたときに前記アプリケーションデータが更新されなかったと判定した場合、前記アプリケーションデータにビット反転エラーが発生したか否かを前記新たな誤り検出符号と前記誤り検出符号とに基づいて判定し、前記アプリケーションデータにビット反転エラーが発生したと判定した場合、前記アプリケーションデータのビット反転エラーを前記誤り訂正符号に基づいて訂正するエラーチェック処理と
をコンピュータに実行させるためのエラーチェックプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、メモリのソフトエラーをチェックするエラーチェック装置、エラーチェック方法およびエラーチェックプログラムに関するものである。
【背景技術】
【０００２】
メモリ装置のエラーとして、物理的な故障によりメモリ素子にデータを記憶することができなくなるハードエラーと、宇宙線などの影響によりメモリ素子に記憶されたデータが意図せずに書き換わってしまうソフトエラーがある。
ソフトエラーは、非常に低い確率ではあるが一定の確率で発生する現象である。
【０００３】
メモリ装置には、パリティやＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）などの冗長な情報を用いて、ソフトエラーをエラーチェック（検出および訂正）する機能を備えたものがある。
エラーチェック機能付きのメモリ装置は、データの信頼性が高いが、価格が高く、また動作速度が遅いためシステムの性能を低下させる。
そのため、システムの性能や部材コストの制約によって、エラーチェック機能付きのメモリ装置を使わないケースがある。
【０００４】
エラーチェック機能付きのメモリ装置を使わない場合、データの信頼性を確保するためには、エラーチェック用の回路をメモリ装置とは別に設けるか、またはソフトウェア処理によってエラーチェックを行う必要がある。
【０００５】
エラーチェック用の回路を設ける場合、チェックビットをデータと同時に読み書きする方式とチェックビットをデータとは別に読み書きする方式がある。
チェックビットをデータと同時に読み書きする方式では、信号線が余分に必要となるため相応のハードウェアコストがかかる。さらに、接続できるメモリ装置も限定されてしまうため、システム設計の柔軟性やメモリ装置の調達に制約が生じる。
チェックビットをデータとは別に読み書きする方式では、チェックビット用のアクセスサイクルが発生してしまうため、システムの性能が低下してしまう。
【０００６】
一方、ソフトウェア処理によってエラーチェックを行う場合、コストを安く抑え、かつシステムの性能を低下させずに、データの信頼性を高めることができる。
【０００７】
例えば、ソフトウェア処理によってエラーチェックを行う方法として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がアプリケーションを実行していないアイドル状態のとき（ＣＰＵの空き時間）に診断プログラムによりエラーチェックを行う方法がある（特許文献１参照）。
この方法では、アプリケーションの実行効率を妨げることなく、データの信頼性を安価に確保することできる。
しかしながら、エラーチェックできるデータは、アプリケーションによって書き換えられることがない固定されたデータ（例えば、ロードされたプログラム）に限られてしまう。これは、アプリケーションから書き換えられたデータのアドレスをソフトウェア処理のみでは検出することができないためである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭５９−０５３９５２号公報
【非特許文献】
【０００９】
【非特許文献１】Ｈａｍｍｉｎｇ，  Ｒ．  Ｗ．  （１９５０）．  “Ｅｒｒｏｒ  ｄｅｔｅｃｔｉｎｇ  ａｎｄ  ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｎｇ  ｃｏｄｅｓ”．  Ｂｅｌｌ  Ｓｙｓｔｅｍ  Ｔｅｃｈ．  Ｊ．  ２９：  ｐｐ．  １４７−１６０．
【非特許文献２】Ｊ．ユステセン、Ｔ．ホーホルト、『誤り訂正符号入門』、阪田省二郎、栗原正純、松井  一、藤沢  匡哉  訳、森北出版、２００５年、ＩＳＢＮ  ４−６２７−８１７１１−８
【非特許文献３】今井秀樹、『符号理論』、コロナ社、１９９０年、ＩＳＢＮ  ４−８８５５２−０９０−８
【非特許文献４】情報理論とその応用学会編、『符号理論とその応用』、倍風館、２００３年、ＩＳＢＮ  ４−５６３−０１４５３−２
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、例えば、アプリケーションによってデータの書き換えが行われるメモリ領域に対しても、アプリケーションの実行に影響を与えることなくエラーチェックを行うことができるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明のエラーチェック装置は、
アプリケーションプログラムによって処理されるアプリケーションデータを記憶するアプリケーションデータ記憶部と、
前記アプリケーションデータのビット反転エラーを検出するときと前記アプリケーションデータのビット反転エラーを訂正するときに使用される誤り検出訂正符号を前記アプリケーションデータに対応付けて記憶する誤り検出訂正符号記憶部と、
前記アプリケーションデータが更新されたか否かを示す更新情報を記憶する更新情報記憶部と、
前記アプリケーションデータの更新を検出し、前記アプリケーションデータが更新されたことを前記更新情報に設定する更新検出部と、
前記アプリケーションプログラムが実行されていないときに前記更新情報に基づいて前記アプリケーションデータが更新されたか否かを判定し、前記アプリケーションデータが更新されたと判定した場合、更新されたアプリケーションデータに基づいて前記誤り検出訂正符号を更新し、前記アプリケーションデータが更新されなかったと判定した場合、前記アプリケーションデータにビット反転エラーが発生したか否かを前記誤り検出訂正符号に基づいて判定し、前記アプリケーションデータにビット反転エラーが発生したと判定した場合、前記アプリケーションデータのビット反転エラーを前記誤り検出訂正符号に基づいて訂正するエラーチェック部とを備える。
【発明の効果】
【００１２】
本発明によれば、例えば、アプリケーションによってデータの書き換えが行われるメモリ領域に対しても、アプリケーションの実行に影響を与えることなくエラーチェックを行うことができる。これにより、システムの信頼性を安価に向上できる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１における情報処理装置１００のハードウェア構成図。
【図２】実施の形態１においてＤＲＡＭ１２０とＳＲＡＭ１３０とに記憶されるデータを示す図。
【図３】実施の形態１における情報処理装置１００のエラーチェック方法を示す概要図。
【図４】実施の形態１における情報処理装置１００のシステム稼働中のエラーチェック方法を示すフローチャート。
【図５】実施の形態１における情報処理装置１００のシステム起動時のエラーチェック方法を示すフローチャート。
【図６】実施の形態１における情報処理装置１００のシステム終了時のエラーチェック方法を示すフローチャート。
【発明を実施するための形態】
【００１４】
実施の形態１．
ソフトウェア処理によりアプリケーションデータをエラーチェックする形態について説明する。
【００１５】
エラーチェックとは、ビットの反転（ソフトエラー、ビット誤り、ビット化けともいう）を検出および訂正することである。
【００１６】
図１は、実施の形態１における情報処理装置１００のハードウェア構成図である。
実施の形態１における情報処理装置１００のハードウェア構成について、図１に基づいて以下に説明する。
【００１７】
「〜部」として説明するものは「〜回路」「〜装置」「〜機器」であってもよく、また、「〜ステップ」「〜手段」「〜処理」であってもよい。すなわち、「〜部」として説明するものはファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００１８】
情報処理装置１００（エラーチェック装置の一例）は、ＣＰＵ１１０、ＤＲＡＭ１２０（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ１３０（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＬＳＩチップ１４０（ＬＳＩ：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）およびバッテリ電源供給回路１０１を備える。
【００１９】
ＣＰＵ１１０は、バス（信号線）を介していＤＲＡＭ１２０とＳＲＡＭ１３０に接続する。
また、ＣＰＵ１１０とＳＲＡＭ１３０とを繋ぐバスはＬＳＩチップ１４０にも接続する。
【００２０】
ＣＰＵ１１０は、ＤＲＡＭ１２０とＳＲＡＭ１３０とを制御する。例えば、ＣＰＵ１１０は、ＤＲＡＭ１２０に記憶されるオペレーティングシステム（ＯＳ）、アプリケーションプログラム、エラーチェックプログラムを実行する。
ＣＰＵ１１０は、ＬＳＩ内部メモリ１４９に記憶される更新ページテーブル１４３やページサイズ１４４にアクセス（読み取り、書き込み）することができる。
【００２１】
ＤＲＡＭ１２０は、オペレーティングシステムやアプリケーションプログラムを記憶する。
また、ＤＲＡＭ１２０は、アプリケーションプログラムによって処理されるアプリケーションデータをエラーチェックするエラーチェックプログラムを記憶する。
また、ＤＲＡＭ１２０（誤り検出訂正符号記憶部の一例）は、エラーチェックに用いられる誤り検出訂正符号を記憶する。
【００２２】
ＳＲＡＭ１３０（アプリケーションデータ記憶部の一例）は、アプリケーションデータなどを記憶する。
ＳＲＡＭ１３０の記憶領域は複数のページに分割され、アプリケーションデータは連続する複数のページに跨って記憶される。ページは固定サイズの論理領域である。
【００２３】
バッテリ電源供給回路１０１はＳＲＡＭ１３０に電力を供給し、ＳＲＡＭ１３０に記憶されたデータを情報処理装置１００の電源が落とされた後も保持する。
つまり、ＳＲＡＭ１３０は情報処理装置１００の電源が落とされてもデータを保持する不揮発メモリであり、ＳＲＡＭ１３０に記憶されたデータは情報処理装置１００の電源が落とされても保持される不揮発データである。
【００２４】
ＬＳＩチップ１４０は、更新ページ検出部１４１とページサイズ設定部１４２とＬＳＩ内部メモリ１４９とを備える電子回路である。
【００２５】
ＬＳＩ内部メモリ１４９（更新情報記憶部の一例）は、更新ページテーブル１４３とページサイズ１４４とを記憶する。
【００２６】
更新ページテーブル１４３（更新情報の一例）は、ＳＲＡＭ１３０に記憶されているアプリケーションデータが更新されたか否かをＳＲＡＭ１３０のページ毎に示す。
【００２７】
ページサイズ１４４は、ＳＲＡＭ１３０のページサイズを示す。
【００２８】
更新ページ検出部１４１（更新検出部の一例）は、ＣＰＵ１１０とＳＲＡＭ１３０とを繋ぐバスを流れるアクセス命令信号を読み取り、アプリケーションデータが記憶されているＳＲＡＭ１３０内の複数のページのうち更新されたページを検出する。
更新ページ検出部１４１は、検出したページを更新ページとして更新ページテーブル１４３に設定する。
【００２９】
ページサイズ設定部１４２は、ユーザが入力装置（キーボード、マウスなど）を用いて情報処理装置１００に指定したページサイズ１４４を入力し、入力したページサイズ１４４をＬＳＩ内部メモリ１４９に記憶する。
ページサイズ設定部１４２は、ＳＲＡＭ１３０の記憶領域をページサイズ１４４毎に分割する。
【００３０】
例えば、ＬＳＩチップ１４０は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）で構成される。
また、ＬＳＩ内部メモリ１４９は、レジスタメモリで構成される。
【００３１】
ＤＲＡＭ１２０とＬＳＩチップ１４０は、エラーチェック機能を備えているものとする。
ＤＲＡＭ１２０に記憶された誤り検出訂正符号やＬＳＩチップ１４０に記憶された更新ページテーブル１４３は、エラーチェック機能により高い信頼性が確保される。
エラーチェック機能を備えたメモリは、ＥＣＣメモリ（ＥＣＣ：Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）とも呼ばれる。
【００３２】
ＳＲＡＭ１３０はエラーチェック機能を備えなくてよい。ＳＲＡＭ１３０に記憶されたアプリケーションデータはエラーチェックプログラム（後述するパトロールタスク１２１）によってエラーチェックされるためである。
【００３３】
図２は、実施の形態１においてＤＲＡＭ１２０とＳＲＡＭ１３０とに記憶されるデータを示す図である。
実施の形態１においてＤＲＡＭ１２０とＳＲＡＭ１３０とに記憶されるデータについて、図２に基づいて以下に説明する。
【００３４】
ＤＲＡＭ１２０（誤り検出訂正符号記憶部の一例）は、オペレーティングシステム１２９、アプリケーションタスク１２３、誤り検出訂正符号テーブル１２２およびパトロールタスク１２１を記憶する。
【００３５】
オペレーティングシステム１２９は、基本ソフトウェア（プログラム）であり、パトロールタスク１２１やアプリケーションタスク１２３を制御する。
【００３６】
アプリケーションタスク１２３は、ＣＰＵ１１０やメモリなどのリソース（ハードウェア）を用いてアプリケーションプログラム（図示省略）を実行する。アプリケーションプログラムとは、情報処理装置１００が実行する目的の情報処理（エラーチェックプログラムを除く）を行うソフトウェアである。
【００３７】
誤り検出訂正符号テーブル１２２は、アプリケーションタスク１２３によって処理されるアプリケーションデータのビット反転エラーを検出するときとアプリケーションデータのビット反転エラーを訂正するときに使用される誤り検出訂正符号をアプリケーションデータのページに対応付けて記憶する。
誤り検出訂正符号は、誤り検出符号と誤り訂正符号とを含む。
誤り検出符号は、アプリケーションデータのビット反転エラーを検出するときに使用される。チェックサムコード（ＣＳＣ）、パリティビット、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）の巡回符号は誤り検出符号の一例である。
誤り訂正符号は、アプリケーションデータのビット反転エラーを訂正するときに使用される。ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）は誤り訂正符号の一例である。また、ハミング符号はＥＣＣの一例である。ＥＣＣは、アプリケーションデータのビット反転エラーを検出するときにも使用できる。
【００３８】
パトロールタスク１２１（エラーチェック部、誤り訂正符号保存部の一例）は、ＣＰＵ１１０やメモリなどのリソース（ハードウェア）を用いてエラーチェックプログラム（図示省略）を実行する。
パトロールタスク１２１は、エラーチェックプログラムを実行して、以下のように動作する。
【００３９】
パトロールタスク１２１は、アプリケーションプログラムが実行されていないときに、更新情報（更新ページテーブル１４３）に基づいてアプリケーションデータが更新されたか否かを判定する。
パトロールタスク１２１は、アプリケーションデータが更新されたと判定した場合、更新されたアプリケーションデータに基づいて誤り検出訂正符号を更新する。
パトロールタスク１２１は、アプリケーションデータが更新されなかったと判定した場合、アプリケーションデータにビット反転エラーが発生したか否かを誤り検出訂正符号に基づいて判定する。
パトロールタスク１２１は、アプリケーションデータにビット反転エラーが発生したと判定した場合、アプリケーションデータのビット反転エラーを誤り検出訂正符号に基づいて訂正する。
【００４０】
パトロールタスク１２１は、アプリケーションプログラムが終了した後に、エラーチェック機能有りメモリ（ＤＲＡＭ１２０）に記憶されている誤り訂正符号（誤り検出訂正符号テーブル１２２）をエラーチェック機能無しメモリ（ＳＲＡＭ１３０）に保存する。
パトロールタスク１２１は、アプリケーションプログラムが開始される前に、エラーチェック機能無しメモリに保存されている誤り訂正符号をエラーチェック機能有りメモリに記憶する。
【００４１】
パトロールタスク１２１の優先度は、アプリケーションタスク１２３の優先度より低く設定してあるものとする。つまり、オペレーティングシステム１２９はパトロールタスク１２１よりアプリケーションタスク１２３を優先して実行させる。
これにより、パトロールタスク１２１の影響を受けずにアプリケーションタスク１２３を実行させることができる。
【００４２】
ＳＲＡＭ１３０は、アプリケーションデータ保存領域１３１と誤り検出訂正符号テーブル保存領域１３２とを有する。
以下、下位アドレス側の領域をアプリケーションデータ保存領域１３１とし、上位アドレス側の領域を誤り検出訂正符号テーブル保存領域１３２とする。また、アプリケーションデータ保存領域１３１と誤り検出訂正符号テーブル保存領域１３２との境界はページ境界と一致するものとする。つまり、アプリケーションデータ保存領域１３１と誤り検出訂正符号テーブル保存領域１３２とはページ境界で区切られている。ページ境界は、ページ間の境界のことであり、ページサイズの整数倍のアドレスを指す。
【００４３】
アプリケーションデータ保存領域１３１（アプリケーションデータ記憶部の一例）は、アプリケーションプログラム（アプリケーションタスク１２３）によって処理されるアプリケーションデータを記憶する領域である。
【００４４】
誤り検出訂正符号テーブル保存領域１３２は、情報処理装置１００が停止している間、誤り検出訂正符号テーブル１２２を保存する領域である。図１で説明したようにＳＲＡＭ１３０にはバッテリ電源供給回路１０１から電力が供給されるため、アプリケーションデータ保存領域１３１に記憶されたアプリケーションデータや誤り検出訂正符号テーブル保存領域１３２に保存された誤り検出訂正符号テーブル１２２は情報処理装置１００の電源が落とされた後も保持される。
誤り検出訂正符号テーブル保存領域１３２に保存された誤り検出訂正符号テーブル１２２は、情報処理装置１００が起動したときにＤＲＡＭ１２０に設定される。
【００４５】
図３は、実施の形態１における情報処理装置１００のエラーチェック方法を示す概要図である。
実施の形態１における情報処理装置１００のエラーチェック方法の概要について、図３に基づいて以下に説明する。
【００４６】
ＳＲＡＭ１３０は、ＬＳＩチップ１４０に設定されたページサイズ１４４に従って、複数の論理的なページに分割してあるものとする。
ＳＲＡＭ１３０には、アプリケーションデータと保存用の誤り検出訂正符号テーブル１２２とが記憶される。
【００４７】
更新ページテーブル１４３は、ＳＲＡＭ１３０の複数のページ（アプリケーションデータ保存領域１３１）に対応付けた複数のビットを有する。
ビット値「０」は対応ページが更新されていないことを示し、ビット値「１」は対応ページが更新されたことを示す。
【００４８】
誤り検出訂正符号テーブル１２２は、ＳＲＡＭ１３０の複数のページ（アプリケーションデータ保存領域１３１）に対応付けた複数のエントリを有する。
各エントリには、対応ページのチェックサムコード（ＣＳＣ）とＥＣＣが設定される。
【００４９】
例えば、ＳＲＡＭ１３０の容量を４メガバイト（０ｘ００４０００００）とし、ページサイズ１４４を２０４８バイト（０ｘ８００）とする。
この場合、ＳＲＡＭ１３０は、ページ［０］からページ［２０４７］までの２０４８ページに分割される。
ページ［０］からページ［１７９１］（０ｘ００００００００〜０ｘ００３７ＦＦＦＦ）をアプリケーションデータ保存領域１３１とし、ページ［１７９２］からページ［２０４７］を誤り検出訂正符号テーブル保存領域１３２とする。
【００５０】
更新ページテーブル１４３のサイズは２５６バイト（＝２０４８ビット）である。
更新ページテーブル１４３の最下位ビット［０］（ＬＳＢ）はＳＲＡＭ１３０のページ［０］に対応し、更新ページテーブル１４３のビット［ｎ］はＳＲＡＭ１３０のページ［ｎ］に対応し、更新ページテーブル１４３の最上位ビット［２０４７］（ＭＳＢ）はＳＲＡＭ１３０のページ［２０４７］に対応する。
但し、誤り検出訂正符号テーブル保存領域１３２のページ［１７９２〜２０４７］に対応するビット［１７９２］からビット［２０４７］は使用しない。
【００５１】
誤り検出訂正符号テーブル１２２は、エントリ［０］からエントリ［１７９１］までの１７９２エントリを有する。誤り検出訂正符号テーブル１２２のエントリ［ｎ］はアプリケーションデータ保存領域１３１のページ［ｎ］に対応する。
チェックサムコードのサイズを４バイト（ワードサイズ）とする。
ＥＣＣのサイズは６４ビット（＝８バイト）のデータに対して８ビット（＝１バイト）である。つまり、アプリケーションデータ保存領域１３１の１ページ（２０４８バイト）に対するＥＣＣのサイズは２５６バイト（＝２０４８バイト／８バイト）である。
したがって、誤り検出訂正符号テーブル１２２の各エントリのサイズは２６０バイト（＝４バイト＋２５６バイト）であり、誤り検出訂正符号テーブル１２２のサイズは４６５９２０バイト（＝２６０バイト×１７９２エントリ）である。
【００５２】
例えば、更新ページ検出部１４１は、アプリケーションデータ保存領域１３１の「０ｘ６８Ｆ０番地」に書き込みが発生したことを検出した場合、書き込みが発生した「０ｘ６８Ｆ０番地」を含むページ［１３］をページサイズ１４４（０ｘ８００）に基づいて特定する（０ｘ６８Ｆ０／０ｘ８００＝１３）。
更新ページ検出部１４１は、更新ページテーブル１４３内の更新ページに対応するビット［１３］にビット値「１」（更新有り）を設定する。
【００５３】
また、パトロールタスク１２１（図示省略）は、アプリケーションタスク１２３（図示省略）が動作していないときにアプリケーションデータ保存領域１３１の更新ページ［１３］を更新ページテーブル１４３に基づいて特定する。
パトロールタスク１２１は、更新ページ［１３］のチェックサム（ＣＳＣ）とＥＣＣとを生成し、生成したチェックサムとＥＣＣとを誤り検出訂正符号テーブル１２２のエントリ［１３］に設定する。
【００５４】
また、パトロールタスク１２１は、アプリケーションタスク１２３が動作していないときにアプリケーションデータ保存領域１３１の未更新ページを更新ページテーブル１４３に基づいて特定する。未更新ページ［ｎ］に対して、更新ページテーブル１４３のビット［ｎ］にはビット値「０」（更新無し）が設定されている。
パトロールタスク１２１は、未更新ページ［ｎ］に対応する誤り検出訂正符号テーブル１２２のエントリ［ｎ］からチェックサムとＥＣＣとを取得する。
パトロールタスク１２１は、未更新ページ［ｎ］にビット反転エラーが生じているか否かをチェックサムを用いて検査する。
パトロールタスク１２１は、未更新ページ［ｎ］にビット反転エラーが生じている場合、未更新ページ［ｎ］のビット反転エラーをＥＣＣを用いて訂正する。
【００５５】
更新ページテーブル１４３をＬＳＩチップ１４０のレジスタメモリで構成する場合、更新ページテーブル１４３のサイズは、ＬＳＩチップ１４０の設計時点で決定されるため固定である。
一方、ＳＲＡＭ１３０の容量は、情報処理装置１００に実装されたＳＲＡＭによって異なる。
【００５６】
そこで、以下のようなサイズをＳＲＡＭ１３０のページサイズ１４４として設定するとよい。
ＳＲＡＭ１３０（または、アプリケーションデータ保存領域１３１）の各ページに対応するビットを更新ページテーブル１４３に設けるため、ＳＲＡＭ１３０のページ数（または、アプリケーションデータ保存領域１３１のページ数）が更新ページテーブル１４３のビット数以下になる。
ページ単位でエラーチェックを行うため、ページサイズ１４４をできるだけ小さなサイズにする。
更新ページ検出部１４１の動作を簡略化するため、２のべき乗の値をページサイズ１４４にする。
【００５７】
ページサイズ１４４の算出式（１）を以下に示す。
【００５８】
【数１】
0005570252.tif 000002
【００５９】
図４は、実施の形態１における情報処理装置１００のシステム稼働中のエラーチェック方法を示すフローチャートである。
情報処理装置１００がシステムを稼働しているときにパトロールタスク１２１が実行するエラーチェックについて、図４に基づいて以下に説明する。
【００６０】
情報処理装置１００がシステムを稼働しているとき、アプリケーションタスク１２３は必要に応じて随時動作する。
パトロールタスク１２１の優先度はアプリケーションタスク１２３より低いため、以下に説明するパトロールタスク１２１の処理はアプリケーションタスク１２３が動作すると中断され、アプリケーションタスク１２３の動作が停止すると再開される。
【００６１】
Ｓ１０１において、パトロールタスク１２１は、ページ番号を示すページ変数「ｎ」を「０」に初期化する。
Ｓ１０１の後、処理はＳ１０２に進む。
【００６２】
Ｓ１０２において、パトロールタスク１２１は、更新ページテーブル１４３のビット［ｎ］（Ｐａｇｅ＿ＴＢＬ［ｎ］）が「１」（更新有り）と「０」（更新無し）とのいずれであるかを判定する。
ビット［ｎ］が「１」である場合（ＹＥＳ）、アプリケーションデータ保存領域１３１のページ［ｎ］は更新されている。チェックサムコードとＥＣＣとを生成するため、処理はＳ１０３に進む。
ビット［ｎ］が「０」である場合（ＮＯ）、アプリケーションデータ保存領域１３１のページ［ｎ］は更新されていない。ビット反転エラーを検出および訂正するため、処理はＳ１１０に進む。
【００６３】
Ｓ１０３において、パトロールタスク１２１は、更新ページテーブル１４３のビット［ｎ］を「０」にクリアする。
Ｓ１０３の後、処理はＳ１０４に進む。
【００６４】
Ｓ１０４において、パトロールタスク１２１は、アプリケーションデータ保存領域１３１のページ［ｎ］（Ｐａｇｅ［ｎ］）のチェックサムコード（ＣＳＣ）とＥＣＣ（例えば、ハミング符号）とを生成する。
パトロールタスク１２１は、ページ［ｎ］をワード単位（例えば、４バイト）に分割し、各ワードデータの排他的論理和をチェックサムコードとして算出する。
ＥＣＣの生成アルゴリズムについては説明を省略する（非特許文献１〜４参照）。
Ｓ１０４の後、処理はＳ１０５に進む。
【００６５】
Ｓ１０５において、パトロールタスク１２１は、Ｓ１０４で生成したチェックサムコードとＥＣＣとを誤り検出訂正符号テーブル１２２のエントリ［ｎ］（Ｃｈｅｃｋ＿ＴＢＬ［ｎ］）に設定する。
Ｓ１０５の後、処理はＳ１０６に進む。
【００６６】
ページ［ｎ］のチェックサムコードとＥＣＣとを生成し、誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定した場合、更新ページテーブル１４３のビット［ｎ］を「０」にクリアする必要がある。
しかし、Ｓ１０４においてページ［ｎ］のチェックサムコードとＥＣＣとを生成する前に、更新ページテーブル１４３のビット［ｎ］をクリアしている（Ｓ１０３）。
これは、パトロールタスク１２１の優先度がアプリケーションタスク１２３より低いためである。このため、ページ［ｎ］のチェックサムコードとＥＣＣとを生成している途中（または、誤り検出訂正符号テーブル１２２に設定している途中）でアプリケーションタスク１２３が動作し、アプリケーションデータ保存領域１３１のページ［ｎ］が更新される可能性がある。
ページ［ｎ］が更新された場合、更新ページテーブル１４３のビット［ｎ］には更新ページ検出部１４１により「１」が設定されるため、ページ［ｎ］に対する次回のループ時にページ［ｎ］のチェックサムコードとＥＣＣとを生成し直すことができる。
【００６７】
Ｓ１１０において、パトロールタスク１２１は、アプリケーションデータ保存領域１３１のページ［ｎ］に対して検査用にチェックサムコードを生成する。
チェックサムコードの生成方法はＳ１０４と同じである。
Ｓ１１０の後、処理はＳ１１１に進む。
【００６８】
Ｓ１１１において、パトロールタスク１２１は、更新ページテーブル１４３のビット［ｎ］が「０」（更新無し）と「１」（更新有り）とのいずれであるかを判定する。
ビット［ｎ］が「０」である場合（ＹＥＳ）、チェックサムコードを検査するため、処理はＳ１１２に進む。
ビット［ｎ］が「１」である場合（ＮＯ）、Ｓ１１０においてチェックサムコードを生成中にページ［ｎ］が更新されている。チェックサムコードとＥＣＣとを生成し直すため、処理はＳ１０３に進む。
【００６９】
Ｓ１１２において、パトロールタスク１２１は、Ｓ１１０で生成した検査用のチェックサムコードと誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定されているチェックサムコードとを比較する。
チェックサムコードが一致する場合（ＹＥＳ）、ページ［ｎ］にビット反転エラーは生じていない。処理はＳ１０６に進む。
チェックサムコードが一致しない場合（ＮＯ）、ページ［ｎ］にビット反転エラーが生じている。ビット反転エラーを訂正するため、処理はＳ１２０に進む。
【００７０】
Ｓ１２０において、パトロールタスク１２１は、誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定されているＥＣＣを用いてビット値が反転しているエラービットを特定し、特定したエラービットのビット値を反転させてビット反転エラーを訂正する。
例えば、ＥＣＣがハミング符号である場合、２ビット以上のエラービットを検出し、１ビットのエラービットを特定および訂正することができる。
ＥＣＣを用いた訂正アルゴリズムについては説明を省略する（非特許文献１〜４参照）。
Ｓ１２０の後、処理はＳ１０６に進む。
【００７１】
パトロールタスク１２１は、チェックサムコードを用いてビット反転エラーを判定し（Ｓ１１２）、ＥＣＣを用いてビット反転エラーを訂正している（Ｓ１２０）。
ＥＣＣを用いてビット反転エラーを判定することもできるが、チェックサムコードを用いることにより、ビット反転エラーの判定に要する計算量を削減することができる。
【００７２】
Ｓ１０６において、パトロールタスク１２１は、ページ変数「ｎ」に「１」を加える。
Ｓ１０６の後、処理はＳ１０７に進む。
【００７３】
Ｓ１０７において、パトロールタスク１２１は、ページ変数「ｎ」とアプリケーションデータ保存領域１３１のページ総数「ｎ＿ｍａｘ」とを大小比較する。
「ｎ≧ｎ＿ｍａｘ」の場合（ＹＥＳ）、アプリケーションデータ保存領域１３１の全ページに対してエラーチェックを終了している。処理はＳ１０１に戻り、アプリケーションデータ保存領域１３１の全ページに対してエラーチェックを繰り返す。
「ｎ＜ｎ＿ｍａｘ」の場合（ＮＯ）、アプリケーションデータ保存領域１３１内にエラーチェックをしていないページが残っている。処理はＳ１０２に戻り、次ページのエラーチェックを行う。
【００７４】
図５は、実施の形態１における情報処理装置１００のシステム起動時のエラーチェック方法を示すフローチャートである。
情報処理装置１００がシステムを起動してからアプリケーションタスク１２３が起動するまでの間にパトロールタスク１２１が実行するエラーチェックについて、図５に基づいて以下に説明する。
【００７５】
アプリケーションタスク１２３が起動していないため、エラーチェック中にアプリケーションデータ保存領域１３１が更新されることはない。
【００７６】
Ｓ２０１において、パトロールタスク１２１は、アプリケーションデータ保存領域１３１が初期化済みであるか否かを判定する。
初期化済みとは、アプリケーションデータ保存領域１３１にアプリケーションデータが記憶されていることを意味する。
【００７７】
初期化済みの場合（ＹＥＳ）、システムが前回終了したときのアプリケーションデータがアプリケーションデータ保存領域１３１に記憶されている。また、システムが前回終了したときの誤り検出訂正符号テーブル１２２が誤り検出訂正符号テーブル保存領域１３２に保存されている。
システムが停止している間に生じるビット反転エラーをエラーチェックするため、処理はＳ２０２に進む。
【００７８】
初期化済みでない場合（ＮＯ）、アプリケーションデータ保存領域１３１に記憶されるアプリケーションデータに対して誤り検出訂正符号テーブル１２２を設定するため、処理はＳ２３０に進む。
【００７９】
Ｓ２０２において、パトロールタスク１２１は、誤り検出訂正符号テーブル保存領域１３２に保存されている誤り検出訂正符号テーブル１２２をＤＲＡＭ１２０に展開（コピー）する。
ＳＲＡＭ１３０にはエラーチェック機能が無いため、ＳＲＡＭ１３０の誤り検出訂正符号テーブル保存領域１３２に保存されていた誤り検出訂正符号テーブル１２２にはビット反転エラーが生じている可能性がある。
Ｓ２０２の後、処理はＳ２０３に進む。
【００８０】
Ｓ２０３において、パトロールタスク１２１は、ページ変数「ｎ」を「０」に初期化する。
Ｓ２０３の後、処理はＳ２０４に進む。
【００８１】
Ｓ２０４において、パトロールタスク１２１は、アプリケーションデータ保存領域１３１のページ［ｎ］にビット反転エラーが生じているか否かを誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定されているＥＣＣを用いて判定する。
ＥＣＣを用いてビット反転エラーを判定する場合、シンドロームと呼ばれる値が算出される。シンドロームが「０」であればビット反転エラーは生じていない。
ＥＣＣのシンドロームを算出する方法については説明を省略する（非特許文献１〜４参照）。
【００８２】
チェックサムコードを用いてビット反転エラーを判定しない理由は、チェックサムコード自体にビット反転エラーが生じている場合にチェックサムコードのビット反転エラーを訂正することができないためである。
ＥＣＣ自体にビット反転エラーが生じた場合にはＥＣＣとＥＣＣに対応するページとを利用してＥＣＣのビット反転エラーを訂正することができる。
【００８３】
Ｓ２０４の後、処理はＳ２０５に進む。
【００８４】
Ｓ２０５において、ビット反転エラーが生じていない場合（ＹＥＳ）、処理はＳ２０６に進む。
また、ビット反転エラーが生じている場合（ＮＯ）、ビット反転エラーを訂正するため、処理はＳ２２０に進む。
【００８５】
Ｓ２２０において、パトロールタスク１２１は、ＥＣＣを用いてページ［ｎ］のビット反転エラーを訂正する。但し、ＥＣＣ自体にビット反転エラーが生じている場合、ＥＣＣのビット反転エラーが訂正される。
Ｓ２２０の後、処理はＳ２０６に進む。
【００８６】
Ｓ２０６において、パトロールタスク１２１は、ページ［ｎ］のチェックサムコードを新たに生成する。
チェックサムコードを新たに生成する理由は、誤り検出訂正符号テーブル１２２に設定されているチェックサムコードにビット反転エラーが生じている可能性があるからである。
Ｓ２０６の後、処理はＳ２０７に進む。
【００８７】
Ｓ２０７において、パトロールタスク１２１は、Ｓ２０６で生成したチェックサムコードを誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定する。
Ｓ２０７の後、処理はＳ２０８に進む。
【００８８】
Ｓ２０８において、パトロールタスク１２１は、ページ変数「ｎ」に「１」を加算する。
Ｓ２０８の後、処理はＳ２０９に進む。
【００８９】
Ｓ２０９において、パトロールタスク１２１は、ページ変数「ｎ」とアプリケーションデータ保存領域１３１のページ総数「ｎ＿ｍａｘ」とを大小比較する。
「ｎ≧ｎ＿ｍａｘ」の場合（ＹＥＳ）、処理はＳ２１０に進む。
「ｎ＜ｎ＿ｍａｘ」の場合（ＮＯ）、次ページのエラーチェックを行うため、処理はＳ２０４に戻る。
【００９０】
Ｓ２１０において、パトロールタスク１２１は、更新ページテーブル１４３の全ビットを「０」（更新無し）に初期化する。
Ｓ２１０により、システム起動時のエラーチェックは終了する。
【００９１】
Ｓ２３０において、パトロールタスク１２１は、更新ページテーブル１４３の全ビットを「１」（更新有り）に初期化する。
更新ページテーブル１４３の全ビットを「１」に初期化することにより、システム稼働中のエラーチェック（図４参照）において誤り検出訂正符号テーブル１２２の全エントリにチェックサムコードとＥＣＣとを設定することができる。
Ｓ２３０により、システム起動時のエラーチェックは終了する。
【００９２】
図６は、実施の形態１における情報処理装置１００のシステム終了時のエラーチェック方法を示すフローチャートである。
アプリケーションタスク１２３が終了してから情報処理装置１００がシステムを終了するまでの間にパトロールタスク１２１が実行するエラーチェックについて、図６に基づいて以下に説明する。
【００９３】
アプリケーションタスク１２３が終了しているため、エラーチェック中にアプリケーションデータ保存領域１３１が更新されることはない。
【００９４】
Ｓ３０１において、パトロールタスク１２１は、ページ変数「ｎ」を「０」に初期化する。
Ｓ３０１の後、処理はＳ３０２に進む。
【００９５】
Ｓ３０２において、パトロールタスク１２１は、アプリケーションデータ保存領域１３１のページ［ｎ］のチェックサムコードを生成する。生成されたチェックサムコードは検査用または設定用として使用される。
Ｓ３０２の後、処理はＳ３０３に進む。
【００９６】
Ｓ３０３において、パトロールタスク１２１は、更新ページテーブル１４３のビット［ｎ］が「１」（更新有り）と「０」（更新無し）とのいずれであるかを判定する。
ビット［ｎ］が「１」である場合（ＹＥＳ）、処理はＳ３０４に進む。
ビット［ｎ］が「０」である場合（ＮＯ）、処理はＳ３１０に進む。
【００９７】
Ｓ３０４において、パトロールタスク１２１は、アプリケーションデータ保存領域１３１のページ［ｎ］のＥＣＣを生成する。
Ｓ３０４の後、処理はＳ３０５に進む。
【００９８】
Ｓ３０５において、パトロールタスク１２１は、Ｓ３０２で生成したチェックサムコードとＳ３０４で生成したＥＣＣとを誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定する。
Ｓ３０５の後、処理はＳ３０６に進む。
【００９９】
Ｓ３１０において、パトロールタスク１２１は、Ｓ３０２で生成したチェックサムコードと誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定されているチェックサムコードとを比較する。
チェックサムコードが一致する場合（ＹＥＳ）、処理はＳ３０６に進む。
チェックサムコードが一致しない場合（ＮＯ）、処理はＳ３２０に進む。
【０１００】
Ｓ３２０において、パトロールタスク１２１は、誤り検出訂正符号テーブル１２２のエントリ［ｎ］に設定されているＥＣＣを用いてアプリケーションデータ保存領域１３１のページ［ｎ］のビット反転エラーを訂正する。
Ｓ３２０の後、処理はＳ３０６に進む。
【０１０１】
Ｓ３０６において、パトロールタスク１２１は、ページ変数「ｎ」に「１」を加える。
Ｓ３０６の後、処理はＳ３０７に進む。
【０１０２】
Ｓ３０７において、パトロールタスク１２１は、ページ変数「ｎ」とアプリケーションデータ保存領域１３１のページ総数「ｎ＿ｍａｘ」とを大小比較する。
「ｎ≧ｎ＿ｍａｘ」の場合（ＹＥＳ）、処理はＳ３０８に進む。
「ｎ＜ｎ＿ｍａｘ」の場合（ＮＯ）、次ページのエラーチェックを行うため、処理はＳ３０２に戻る。
【０１０３】
Ｓ３０８において、パトロールタスク１２１は、ＤＲＡＭ１２０に記憶されている誤り検出訂正符号テーブル１２２をＳＲＡＭ１３０の誤り検出訂正符号テーブル保存領域１３２にコピーして誤り検出訂正符号テーブル１２２を保存する。
Ｓ３０８により、システム終了時のエラーチェックは終了する。
【０１０４】
実施の形態１において、例えば、以下のような情報処理装置１００について説明した。
【０１０５】
情報処理装置１００は以下のものを備える。
（１）ソフトエラーに対する信頼性が確保されていない第１外部メモリ（ＳＲＡＭ１３０）
（２）冗長ビット構成により信頼性がより高く確保された第２外部メモリ（ＤＲＡＭ１２０）
（３）第１外部メモリのエラーチェックの単位であるページのサイズを指定するためのページサイズ設定手段（ページサイズ１４４）
（４）第１外部メモリのページ単位での更新状況を検出する情報処理装置１００内の手段（更新ページ検出部１４１）
（５）第１外部メモリのページ単位の更新状況を記録する情報処理装置１００内の手段（更新ページテーブル１４３）
（６）低優先度のソフトウェア処理でページ単位のエラーチェックを行うパトロールタスク１２１
（７）ページに対応するエントリを持ち、ページのエラー検出および訂正に必要な符号データを格納する第２外部メモリに置かれた誤り検出訂正符号テーブル１２２
【０１０６】
実施の形態１において、例えば、以下のようなエラーチェック方法について説明した。
【０１０７】
（１）チェック対象の第１外部メモリのアドレス空間をページ単位で分割し、更新ページ検出手段（更新ページ検出部１４１）で更新のあったページを検出し、更新ページテーブル１４３上に記録する。
（２）低優先度のパトロールタスクによって更新ページテーブル１４３をチェックする。更新のあったページについては誤り検出訂正符号を生成し、誤り検出訂正符号テーブル１２２の該当ページに対応する第２外部メモリ上のエントリに格納する。
（３）低優先度のパトロールタスクによって更新ページテーブル１４３をチェックする。更新のなかったページについては誤り検出訂正符号テーブル１２２の該当ページに対応する第２外部メモリ上のエントリに格納された誤り検出訂正符号を用いて検査することで、ソフトエラーの検出および訂正を行う。
【０１０８】
エラーチェック対象の第１外部メモリに対してバッテリ電源供給手段（バッテリ電源供給回路１０１）によって電源供給がなされることにより、その内容が装置の立ち下げから次の立ち上げまで常に保持された状態を保つ（不揮発性である）。
装置立ち下げ時には全てのページのエラー検出と誤ったデータの訂正を行い、更新された第２外部メモリ上の誤り検出訂正符号テーブル１２２の全エントリの値を第１外部メモリの所定の位置に保存する。
装置立ち上げ時には、不揮発性メモリ（ＳＲＡＭ１３０）の所定の位置に保存された誤り検出訂正符号テーブル１２２を展開してエラーチェックを行うことで、装置停止中に発生したソフトエラーを検出する。
【０１０９】
誤り検出にはソフトウェアによる計算量が少ないチェックサムコードを用い、誤り訂正には計算量が多いＥＣＣを用いる。
チェックサムコードによってエラー検出したページに対してのみ、ＥＣＣでエラー訂正を行う。
【０１１０】
ページサイズ設定手段でページサイズを変更可能にすることで、更新ページテーブルのサイズを固定にしたまま、様々な容量の第１外部メモリに対してエラーチェックを可能とする。
【０１１１】
ＣＰＵの空き時間に低優先度のソフトウェア処理でエラーチェックを行うため、本来処理すべきアプリケーションの実行を阻害することなく、第１外部メモリの信頼性を向上させることができる。
また、ＣＰＵから第１外部メモリに対する通常アクセスにおいて余分なアクセスサイクルを発生させることがないため、システム性能を低下させることがない。
また、更新ページ検出手段によって更新のあったメモリ領域を特定することが可能であるため、データ領域のような通常のアプリケーション処理で読み書きが発生するような領域であってもエラーチェックが可能である。
さらに、システムの立ち上げ、立ち下げ時の処理によってシステム停止中の不揮発データのビット化けに対してもエラー訂正が可能であり、信頼性をさらに高めている。
エラーチェックの機能をソフトウェアとハードウェアとで分担することにより、柔軟性があり、かつ効率の良いエラーチェックを安価に実現することができる。
【０１１２】
さらに、ページサイズ設定手段（ページサイズ設定部１４２）を設けたことにより、様々な容量のメモリ装置に柔軟に対応することが可能となっている。
例えば、更新ページ検出手段、更新ページテーブル、およびページサイズ設定手段をＡＳＩＣやＳｏＣのようなＬＳＩ内部にパッケージングすることで更新ページテーブルのサイズが固定化される場合でも、接続される第１外部メモリの容量を規定することなく自由度の高い装置構成を可能としている。
【０１１３】
但し、ページへの書き込みが行われた時点から、ページの誤り検出訂正符号を生成するまでの間に発生するソフトエラーを検出することはできないため、厳密な信頼性を保証できるわけではない。
しかし、コスト重視の製品領域においては安価に信頼性を底上げすることが可能であるため、有用性がある。
【符号の説明】
【０１１４】
１００  情報処理装置、１０１  バッテリ電源供給回路、１１０  ＣＰＵ、１２０  ＤＲＡＭ、１２１  パトロールタスク、１２２  誤り検出訂正符号テーブル、１２３  アプリケーションタスク、１２９  オペレーティングシステム、１３０  ＳＲＡＭ、１３１  アプリケーションデータ保存領域、１３２  誤り検出訂正符号テーブル保存領域、１４０  ＬＳＩチップ、１４１  更新ページ検出部、１４２  ページサイズ設定部、１４３  更新ページテーブル、１４４  ページサイズ、１４９  ＬＳＩ内部メモリ。
【図１】
0005570252.tif 000003
【図２】
0005570252.tif 000004
【図３】
0005570252.tif 000005
【図４】
0005570252.tif 000006
【図５】
0005570252.tif 000007
【図６】
0005570252.tif 000008