(57)【要約】【課題】メモリに記憶されたデータの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能なメモリ制御装置、制御方法及び制御プログラムを提供する。【解決手段】メモリ制御装置１２０は、プロセッサ１２５と、メモリ１２４と、プロセッサからの指示に従って、書込処理と読出処理とを実行するメモリコントローラ１２６とを有し、メモリコントローラは、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。【選択図】図２
2017151874.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
メモリと、
前記プロセッサからの指示に従って、前記メモリにデータ及び誤り訂正用データを書き込む書込処理と、前記プロセッサからの指示に従って、前記メモリからデータを読み出し、読み出したデータを前記プロセッサに出力する読出処理とを実行するメモリコントローラと、を有し、
前記メモリコントローラは、
前記メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、
定期的に、前記複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、
前回の前記判定処理を実行した後に、前記書込処理又は前記読出処理によって、全ての前記注目アドレスにアクセスしたブロックに対する次回の前記判定処理を省略する、
ことを特徴とするメモリ制御装置。
【請求項２】
前記メモリコントローラは、前記読出処理において、前記メモリから誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する、請求項１に記載のメモリ制御装置。
【請求項３】
前記メモリコントローラは、特定のブロックに対する前記次回の判定処理を省略した場合、即時に他のブロックに対する前記判定処理を実行する第１モードと、所定時間待機してから他のブロックに対する前記判定処理を実行する第２モードの内の何れか一方で動作する、請求項１または２に記載のメモリ制御装置。
【請求項４】
前記メモリコントローラは、所定期間内における誤り発生量に応じて、前記第１モードと前記第２モードの内の何れで動作するかを決定する、請求項３に記載のメモリ制御装置。
【請求項５】
前記メモリコントローラは、前記第２モードで動作中に前記誤り発生量が第１閾値以上となった場合、前記第２モードから前記第１モードに切り替え、前記第１モードで動作中に前記誤り発生量が第１閾値より小さい第２閾値以下となった場合、前記第１モードから前記第２モードに切り替える、請求項４に記載のメモリ制御装置。
【請求項６】
プロセッサと、メモリと、前記プロセッサからの指示に従って、前記メモリにデータ及び誤り訂正用データを書き込む書込処理と、前記プロセッサからの指示に従って、前記メモリからデータを読み出し、読み出したデータを前記プロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御方法であって、
前記メモリコントローラが、
前記メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、
定期的に、前記複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、
前回の前記判定処理を実行した後に、前記書込処理又は前記読出処理によって、全ての前記注目アドレスにアクセスしたブロックに対する次回の前記判定処理を省略する、
ことを特徴とする制御方法。
【請求項７】
プロセッサと、メモリと、前記プロセッサからの指示に従って、前記メモリにデータ及び誤り訂正用データを書き込む書込処理と、前記プロセッサからの指示に従って、前記メモリからデータを読み出し、読み出したデータを前記プロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御プログラムであって、
前記メモリコントローラに、
前記メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、
定期的に、前記複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、
前回の前記判定処理を実行した後に、前記書込処理又は前記読出処理によって、全ての前記注目アドレスにアクセスしたブロックに対する次回の前記判定処理を省略する、
ことを実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置並びにそのメモリ制御装置の制御方法及び制御プログラムに関し、特に、誤り訂正用データを用いてメモリに記憶されたデータに誤りがあるか否かを判定するメモリ制御装置、制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
一般に、正常なメモリを使用していても、メモリに記憶されたデータの特定のビットが宇宙線の影響によって反転し、壊れてしまうことがある。特に、サーバ等は、長時間稼動し続ける必要がありシステムを容易に再起動できないにも関わらず、メモリ上に広範囲にわたってクリティカルなデータを記憶しているため、メモリに記憶されたデータが壊れてしまうとシステムに多大な影響を与えてしまう。
【０００３】
このようなビットの反転を検出し、可能であれば正しいデータに訂正するための技術としてＥＣＣ（Error Check and Correct）が知られている。ＥＣＣでは、１ビットの反転が発生した場合、データの誤りを検出及び訂正することができる。しかしながら、さらにデータが壊れて２ビットの反転が発生した場合、データの誤りを検出できるが、訂正することはできなくなる。そのため、サーバ等では、データの誤りが発生した場合に、その誤りを訂正できるように、可能な限り早期に検出することが望まれている。
【０００４】
一般に、２ビット以上のデータの誤りの発生を防ぐために、システムからの要求により実行される本来のメモリアクセスとは別個に、定期的にメモリ全体を読み出してデータの誤りが発生していないかを判定するメモリパトロールが実行される。しかしながら、メモリパトロールによるメモリアクセスが実行されている間は、本来のメモリアクセスを実行することはできず、頻繁にメモリパトロールが実行されると、本来のメモリアクセスの性能が低下する。したがって、メモリパトロール機能には、メモリに記憶されたデータの信頼性を確保するとともに、メモリへのアクセス性能の低下を防ぐことが要求されている。
【０００５】
システム性能を低下させることなくメモリに格納されたデータの信頼性を高く保つためのメモリパトロール制御装置が知られている（特許文献１を参照）。このメモリパトロール制御装置は、ＣＰＵと、複数のメモリブロックからなるメモリと、周期的にメモリブロックの誤り検出および誤り訂正を行うメモリパトロール手段と、メモリパトロールの実行を制御するメモリパトロール制御手段とを備える。このメモリパトロール制御装置は、ＣＰＵからメモリブロックへのアクセス回数をカウントするアクセス頻度算出手段をさらに備え、メモリパトロール制御手段は、アクセス回数が所定値を超えた場合に当該メモリブロックに対するメモリパトロールの回数を減らす。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−５９８２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
メモリパトロール機能には、メモリに記憶されたデータの信頼性のさらなる向上、及び、メモリへのアクセス性能の低下のさらなる防止が要求されている。
【０００８】
本発明の目的は、メモリに記憶されたデータの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能なメモリ制御装置、制御方法及び制御プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の一側面に係るメモリ制御装置は、プロセッサと、メモリと、プロセッサからの指示に従って、メモリにデータ及び誤り訂正用データを書き込む書込処理と、プロセッサからの指示に従って、メモリからデータを読み出し、読み出したデータをプロセッサに出力する読出処理とを実行するメモリコントローラと、を有し、メモリコントローラは、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
【００１０】
また、本発明の他の側面に係る制御方法は、プロセッサと、メモリと、プロセッサからの指示に従って、メモリにデータ及び誤り訂正用データを書き込む書込処理と、プロセッサからの指示に従って、メモリからデータを読み出し、読み出したデータをプロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御方法であって、メモリコントローラが、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
【００１１】
また、本発明の一側面に係る制御プログラムは、プロセッサと、メモリと、プロセッサからの指示に従って、メモリにデータ及び誤り訂正用データを書き込む書込処理と、プロセッサからの指示に従って、メモリからデータを読み出し、読み出したデータをプロセッサに出力する読出処理とを実行するメモリコントローラと、を有するメモリ制御装置の制御プログラムであって、メモリコントローラに、メモリ内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に、各ブロック内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行し、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略することを実行させる。
【発明の効果】
【００１２】
本発明によれば、メモリ制御装置は、メモリに記憶されたデータの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係る情報処理装置１００のハードウェア構成を示す図である。
【図２】メモリコントローラ１２６等の概略構成を示す図である。
【図３】ブロック及び注目アドレスについて説明するための模式図である。
【図４】アクセス監視回路１５２の概略構成を示す図である。
【図５】アクセス監視処理の動作の例を示すフローチャートである。
【図６】省略ブロック決定回路１５３の概略構成を示す図である。
【図７】注目アドレスの変更について説明するための模式図である。
【図８】省略ブロック決定処理の動作の例を示すフローチャートである。
【図９】フラグクリア処理の動作の例を示すフローチャートである。
【図１０】判定制御回路１５４の概略構成を示す図である。
【図１１】ブロック選択処理の動作の例を示すフローチャートである。
【図１２】周期生成処理の動作の例を示すフローチャートである。
【図１３】判定実行処理の動作の例を示すフローチャートである。
【図１４】データ制御回路１５５の概略構成を示す図である。
【図１５】データ制御処理の動作の例を示すフローチャートである。
【図１６】他の実施形態に係るメモリコントローラ等の概略構成を示す図である。
【図１７】他の実施形態に係る画像読取装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の一側面に係る通信装置及び制御方法について図を参照しつつ説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【００１５】
図１は、実施形態に係る情報処理装置１００のハードウェア構成を示す図である。
【００１６】
情報処理装置１００は、例えば他の装置から送信されたデータを記憶するとともに、記憶したデータを他の装置からの要求に従って読み出して送信するサーバ等である。図１に示すように、情報処理装置１００は、本体装置１１０と、メモリ制御装置１２０と、一又は複数の外部記憶装置１３０と、を有する。以下、情報処理装置１００の各部について詳細に説明する。
【００１７】
本体装置１１０は、例えば情報処理装置１００のマザーボード等である。本体装置１１０は、本体インタフェース１１１と、本体記憶装置１１２と、本体メモリ１１３と、本体ＣＰＵ（Central Processing Unit）１１４とを有する。以下、本体装置１１０の各部について詳細に説明する。
【００１８】
本体インタフェース１１１は、メモリ制御装置１２０と通信可能なインタフェース回路を有し、メモリ制御装置１２０とケーブルを用いて電気的に接続して各種のデータ及び情報を送受信する。本体インタフェース１１１は、例えばＳＡＴＡ（Serial ATA）等の規格に準じた通信を行うための回路を有する。なお、本体インタフェース１１１は、ＵＳＢ（Universal Serial Bus）等の他の規格に準じるインタフェース回路を有し、ＵＳＢケーブル等を用いてメモリ制御装置１２０と電気的に接続してもよい。
【００１９】
本体記憶装置１１２は、ＲＯＭ（Read Only Memory）等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、本体記憶装置１１２には、本体装置１１０の各種処理に用いられる各種データ、コンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、コンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて本体記憶装置１１２にインストールされてもよい。可搬型記録媒体は、例えばＣＤ−ＲＯＭ（compact disk read only memory）、ＤＶＤ−ＲＯＭ（digital versatile disk read only memory）等である。
【００２０】
本体メモリ１１３は、例えばＤＲＡＭ（Dynamic Random Access Memory）等のメモリ装置である。本体メモリ１１３には、本体装置１１０の各種処理に用いられる各種データ、プログラムコード等が格納される。
【００２１】
本体ＣＰＵ１１４は、予め本体記憶装置１１２に記憶されているプログラムに基づいて動作する。なお、本体ＣＰＵ１１４に代えて、ＤＳＰ（digital signal processor）、ＬＳＩ（large scale integration）等が用いられてもよい。また、本体ＣＰＵ１１４に代えて、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programming Gate Array）等が用いられてもよい。
【００２２】
メモリ制御装置１２０は、例えばＲａｉｄ（Redundant Arrays of Inexpensive Disks）カードのような、本体装置１１０に拡張して使用される拡張カード等である。メモリ制御装置１２０は、第１インタフェース１２１と、第２インタフェース１２２と、記憶装置１２３と、メモリ１２４と、ＣＰＵ１２５と、メモリコントローラ１２６とを有する。第１インタフェース１２１、第２インタフェース１２２、ＣＰＵ１２５及びメモリコントローラ１２６は、例えば一つのＦＰＧＡで実装される。以下、メモリ制御装置１２０の各部について詳細に説明する。
【００２３】
第１インタフェース１２１は、本体インタフェース１１１と同様のインタフェース回路を有し、本体装置１１０とケーブルを用いて電気的に接続して各種のデータ及び情報を送受信する。
【００２４】
第２インタフェース１２２は、各外部記憶装置１３０と通信可能なインタフェース回路を有し、各外部記憶装置１３０とケーブルを用いて電気的に接続して各種のデータ及び情報を送受信する。第２インタフェース１２２は、例えばＳＡＴＡ等の規格に準じた通信を行うための回路を有する。
【００２５】
記憶装置１２３は、ＲＯＭ、ＲＡＭ等のメモリ装置等を有する。また、記憶装置１２３には、メモリ制御装置１２０の各種処理に用いられる各種データ、コンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いてメモリ制御装置１２０にインストールされてもよい。なお、メモリ制御装置１２０の各種処理に用いられるコンピュータプログラムは、記憶装置１２３の代わりに、本体記憶装置１１２に記憶されてもよい。
【００２６】
メモリ１２４は、例えばＤＲＡＭ等のメモリ装置である。メモリ１２４には、本体装置１１０から送信されたデータ、そのデータに誤りがあるか否かを判定し且つ訂正するための誤り訂正用データ等が記憶される。誤り訂正用データとして、例えばＥＣＣに用いられる訂正データが記憶される。
【００２７】
ＣＰＵ１２５は、プロセッサの一例であり、予め記憶装置１２３に記憶されているプログラムに基づいて動作する。なお、ＣＰＵ１２５に代えて、ＤＳＰ、ＬＳＩ、ＡＳＩＣ、ＦＰＧＡ等が用いられてもよい。
【００２８】
ＣＰＵ１２５は、第１インタフェース１２１を介して本体装置１１０から、外部記憶装置１３０にデータを書き込むための書込要求信号を受け付ける。書込要求信号には、書き込むデータ及びそのデータを書き込む外部記憶装置１３０のアドレス等が含まれる。ＣＰＵ１２５は、本体装置１１０から書込要求信号を受け付けると、書込要求信号に含まれるデータを第２インタフェース１２２を介して外部記憶装置１３０に記憶しつつ、メモリ１２４に書き込むための書込指示信号をメモリコントローラ１２６に送る。書込指示信号には、書き込むデータ、そのデータを書き込むメモリ１２４のアドレス、及び、書き込みを行うためのライトイネーブル信号等が含まれる。
【００２９】
また、ＣＰＵ１２５は、第１インタフェース１２１を介して本体装置１１０から、外部記憶装置１３０からデータを読み出すための読出要求信号を受け付ける。読出要求信号には、データを読み出す外部記憶装置１３０のアドレス、及び、読み出しを行うためのリードイネーブル信号等が含まれる。
【００３０】
ＣＰＵ１２５は、本体装置１１０から読出要求信号を受け付けると、読出要求信号に含まれるアドレスに記憶されたデータがメモリ１２４に記憶されているか否かを判定する。ＣＰＵ１２５は、そのデータがメモリ１２４に記憶されている場合、メモリ１２４からデータを読み出すための読出指示信号をメモリコントローラ１２６に送る。読出指示信号には、データを読み出すメモリ１２４のアドレス、及び、読み出しを行うためのリードイネーブル信号等が含まれる。そして、ＣＰＵ１２５は、メモリコントローラ１２６から受け取ったデータを第１インタフェース１２１を介して本体装置１１０に送信する。一方、ＣＰＵ１２５は、そのデータがメモリ１２４に記憶されていない場合、そのデータを第２インタフェース１２２を介して外部記憶装置１３０から読み出し、読み出したデータを第１インタフェース１２１を介して本体装置１１０に送信する。
【００３１】
メモリコントローラ１２６は、ＦＰＧＡにより構成される。なお、メモリコントローラ１２６は、ＤＳＰ、ＬＳＩ、ＡＳＩＣ等により構成されてもよい。
【００３２】
メモリコントローラ１２６は、ＣＰＵ１２５からの書込指示信号に従って、メモリ１２４にデータ及び誤り訂正用データを書き込む書込処理を実行する。また、メモリコントローラ１２６は、ＣＰＵ１２５からの読出指示信号に従って、メモリ１２４からデータを読み出し、読み出したデータをＣＰＵ１２５に出力する読出処理を実行する。また、メモリコントローラ１２６は、定期的に、メモリ１２４内のデータ及び誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する判定処理を実行する。なお、メモリコントローラ１２６は、読出処理においても、判定処理と同様に、メモリ１２４から誤り訂正用データを読み出し、読み出した誤り訂正用データを用いて、読み出したデータに誤りがあるか否かを判定する。
【００３３】
各外部記憶装置１３０は、例えばハードディスク等の固定ディスク装置である。各外部記憶装置１３０には、本体装置１１０からメモリ制御装置１２０を介して書き込まれた各種データ等が格納される。
【００３４】
図２は、メモリコントローラ１２６等の概略構成を示す図である。
【００３５】
図２に示すように、メモリコントローラ１２６は、メモリ１２４内のメモリ空間を複数のブロック１４１に分割して管理する。また、メモリコントローラ１２６は、設定記憶回路１５１と、アクセス監視回路１５２と、省略ブロック決定回路１５３と、判定制御回路１５４と、データ制御回路１５５とを有する。
【００３６】
設定記憶回路１５１は、ＣＰＵ１２５から設定された各設定値を記憶しつつ、各設定値をアクセス監視回路１５２、省略ブロック決定回路１５３及び判定制御回路１５４に対して出力する。設定値には、許可フラグと、判定周期と、動作モードと、待機時間とが含まれる。
【００３７】
許可フラグは、判定処理の実行を許可するか否かを示すフラグである。判定周期は、判定処理が実行される周期である。動作モードは、判定処理におけるメモリコントローラ１２６の動作を規定するモードであり、動作モードには、待機モードと即時モードとが含まれる。待機時間は、動作モードが待機モードである場合に、次回の判定処理まで待機する時間である。
【００３８】
また、設定値には、さらに、注目アドレスの初期値及び間隔と、分割ブロック数とが含まれる。
【００３９】
図３は、ブロック及び注目アドレスについて説明するための模式図である。
【００４０】
図３に示すように、メモリ１２４内のメモリ空間は、複数のブロック１〜Ｎに分割される。分割ブロック数は、メモリ１２４のメモリ空間を分割するブロックの数である。分割ブロック数として、例えば２の累乗となる値が設定される。各ブロックは、さらに複数のサブブロックに分割され、各サブブロック内の所定アドレスが、それぞれ注目アドレスとして設定される。即ち、各ブロックにおいて所定間隔（サブブロックのサイズ）毎に注目アドレスが設定される。所定間隔として、例えば２の累乗となる値（バイト数）が設定される。図３に示す例では、注目アドレスの初期値が０であり、所定間隔が４である。
【００４１】
図４は、アクセス監視回路１５２の概略構成を示す図である。
【００４２】
図４に示すように、アクセス監視回路１５２は、アクセス検出回路１６１と、検出アドレス出力回路１６２とを有する。
【００４３】
データ制御回路１５５には、ＣＰＵ１２５から出力される書込指示信号に含まれるデータ、アドレス及びライトイネーブル信号と、読出指示信号に含まれるアドレス及びリードイネーブル信号とが入力される。
【００４４】
アクセス検出回路１６１には、設定記憶回路１５１から出力される許可フラグと、ＣＰＵ１２５から出力される書込指示信号に含まれるライトイネーブル信号、及び、読出指示信号に含まれるリードイネーブル信号とが入力される。アクセス検出回路１６１は、ＣＰＵ１２５から書込指示信号又は読出指示信号が出力されたか否かの検出結果を示す検出フラグを検出アドレス出力回路１６２に出力する。
【００４５】
検出アドレス出力回路１６２には、アクセス検出回路１６１から出力された検出フラグと、ＣＰＵ１２５から出力される書込指示信号又は読出指示信号に含まれるアドレスとが入力される。検出アドレス出力回路１６２は、ＣＰＵ１２５から書込又は読出が指示されたアドレス（以下、検出アドレスと称する場合がある）を省略ブロック決定回路１５３に出力する。
【００４６】
図５は、アクセス監視回路１５２によるアクセス監視処理の動作の例を示すフローチャートである。以下、図５に示したフローチャートを参照しつつ、アクセス監視処理の動作の例を説明する。なお、以下に説明する動作のフローは、主にアクセス監視回路１５２によりメモリコントローラ１２６の各要素と協働して実行される。
【００４７】
最初に、アクセス監視回路１５２は、設定記憶回路１５１から、許可フラグの設定を受け付ける（ステップＳ１０１）。
【００４８】
次に、アクセス監視回路１５２は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する（ステップＳ１０２）。
【００４９】
許可フラグが判定処理の実行の許可を示さない場合、アクセス監視回路１５２は、一連のステップを終了する。
【００５０】
一方、許可フラグが判定処理の実行の許可を示す場合、アクセス検出回路１６１は、ＣＰＵ１２５から書込指示信号又は読出指示信号が出力されたか否かを判定する（ステップＳ１０３）。アクセス検出回路１６１は、ＣＰＵ１２５から出力されるライトイネーブル信号及びリードイネーブル信号を監視する。アクセス検出回路１６１は、ライトイネーブル信号がイネーブル（有効）になった場合、書込指示信号が出力されたと判定し、リードイネーブル信号がイネーブル（有効）になった場合、読出指示信号が出力されたと判定する。
【００５１】
ＣＰＵ１２５から書込指示信号又は読出指示信号が出力されていない場合、アクセス監視回路１５２は、検出アドレスを出力せずに、処理をステップＳ１０２へ戻す。
【００５２】
一方、ＣＰＵ１２５から書込指示信号又は読出指示信号が出力された場合、アクセス検出回路１６１は、書込指示信号又は読出指示信号が出力されたことを示す検出フラグを検出アドレス出力回路１６２に出力する。アクセス検出回路１６１から検出フラグが出力されると、検出アドレス出力回路１６２は、ＣＰＵ１２５から受信したアドレスを検出アドレスとして省略ブロック決定回路１５３に出力し（ステップＳ１０４）、処理をステップＳ１０２に戻す。
【００５３】
図６は、省略ブロック決定回路１５３の概略構成を示す図である。
【００５４】
図６に示すように、省略ブロック決定回路１５３は、検出アドレス分割回路１７１と、注目アドレス記憶回路１７２と、比較回路１７３と、アドレス出力回路１７４と、デコーダ１７５と、アクセスフラグ記憶回路１７６と、省略フラグ生成回路１７７と、を有する。
【００５５】
検出アドレス分割回路１７１には、設定記憶回路１５１から出力される注目アドレスの間隔、分割ブロック数及び許可フラグと、アクセス監視回路１５２から出力される検出アドレスとが入力される。検出アドレス分割回路１７１は、入力された検出アドレスを分割して出力する。検出アドレス分割回路１７１は、検出アドレスの第１所定ビットを注目アドレス記憶回路１７２に出力し、検出アドレスの第２所定ビットを比較回路１７３に出力し、検出アドレスの第３所定ビットをアドレス出力回路１７４に出力する。
【００５６】
第１所定ビットは、検出アドレスが属するブロックを識別可能なビットである。第２所定ビットは各ブロックにおける注目アドレスを識別可能なビットであり、下位から注目アドレスの間隔分のビットである。第３所定ビットは、検出アドレスが属するサブブロックを識別可能なビットである。
【００５７】
例えば、メモリ１２４のサイズが５１２Ｍバイトである場合、メモリ１２４内の各アドレスは２９ビットで表される。さらに分割ブロック数が４である場合、第１所定ビットは２９ビットの内の上位２ビット（２８〜２９ビット目）となる。さらに注目アドレス間隔が４バイトである場合、第２所定ビットは２９ビットの内の下位２ビット（１〜２ビット目）となり、第３所定ビットは２９ビットの内の上位２７ビット（３〜２９ビット目）となる。
【００５８】
注目アドレス記憶回路１７２には、検出アドレス分割回路１７１から出力される検出アドレスの第１所定ビットが入力される。注目アドレス記憶回路１７２には、さらに、設定記憶回路１５１から出力される注目アドレスの初期値及び間隔、分割ブロック数並びに許可フラグと、判定制御回路１５４から出力されるクリア信号とが入力される。クリア信号は、ブロック毎に別個に、各ブロックに対する判定処理が実行された場合に出力される。
【００５９】
注目アドレス記憶回路１７２は、分割されたブロック毎に注目アドレスを管理し、各ブロックの注目アドレスを記憶する。なお、注目アドレス記憶回路１７２は、設定記憶回路１５１から注目アドレスの間隔を取得するので、全ての注目アドレスを記憶する必要はなく、注目アドレスの先頭アドレスのみを記憶する。注目アドレス記憶回路１７２は、特定のブロックに対するクリア信号を受信すると、その特定のブロックの注目アドレスを変更する。
【００６０】
図７は、注目アドレスの変更について説明するための模式図である。
【００６１】
図７に示すブロック７００、７１０、７２０は同一のブロックを示す。サブブロック７０１、７０２はブロック７００内のサブブロックを示し、サブブロック７１１、７１２はブロック７１０内のサブブロックを示し、サブブロック７２１、７２２はブロック７２０内のサブブロックを示す。
【００６２】
装置起動時、注目アドレスの先頭アドレスは、設定記憶回路１５１から出力される初期値７０３（例えば０）に設定される。注目アドレス記憶回路１７２は、判定制御回路１５４から特定のブロックに対するクリア信号を受信すると、その特定のブロックの注目アドレスの先頭アドレスに所定値（例えば１）を加算する。なお、注目アドレスの間隔（例えば４）は固定であるため、図７に示すように、注目アドレスの先頭アドレスに所定値が加算されると、そのブロック内の全注目アドレスは所定値が加算された値に変更される。
【００６３】
後述するように、注目アドレスは、判定処理を実行するブロックを決定するために用いられ、ブロック内の全ての注目アドレスにアクセスされたか否かにより、判定処理を省略するか実行するかが判定される。したがって、注目アドレスを変更することにより、固定のアドレスのみを用いて、判定処理を省略するか実行するかを判定することが抑制され、各ブロック内でアクセスされる領域の傾向をより精度良く判定することが可能となる。
【００６４】
注目アドレス記憶回路１７２は、検出アドレス分割回路１７１から出力された検出アドレスの第１所定ビットに対応するブロックにおける注目アドレスの第２所定ビットを比較回路１７３に出力する。
【００６５】
比較回路１７３には、検出アドレス分割回路１７１から出力される検出アドレスの第２所定ビットと、注目アドレス記憶回路１７２から出力される注目アドレスの第２所定ビットとが入力される。比較回路１７３は、検出アドレスの第２所定ビットと注目アドレスの第２所定ビットとを比較し、両者が一致するか否かを示す比較結果をアドレス出力回路１７４に出力する。
【００６６】
アドレス出力回路１７４には、比較回路１７３から出力される比較結果と、検出アドレス分割回路１７１から出力される検出アドレスの第３所定ビットとが入力される。比較結果が検出アドレスの第２所定ビットと注目アドレスの第２所定ビットが一致することを示す場合、アドレス出力回路１７４は、検出アドレスの第３所定ビットをデコーダ１７５に出力する。一方、比較結果が検出アドレスの第２所定ビットと注目アドレスの第２所定ビットが一致しないことを示す場合、アドレス出力回路１７４は、検出アドレスの第３所定ビットを出力しない。
【００６７】
デコーダ１７５には、アドレス出力回路１７４から出力される検出アドレスの第３所定ビットが入力される。デコーダ１７５は、入力された検出アドレスの第３所定ビットに対応するサブブロックを示すサブブロック情報をアクセスフラグ記憶回路１７６に出力する。サブブロック情報は、検出アドレスが属するブロック及びサブブロックを識別可能な情報である。
【００６８】
アクセスフラグ記憶回路１７６には、設定記憶回路１５１から出力される注目アドレスの間隔及び分割ブロック数と、デコーダ１７５から出力されるサブブロック情報と、判定制御回路１５４から出力されるクリア信号とが入力される。アクセスフラグ記憶回路１７６は、全てのブロックの全てのサブブロック毎に、各サブブロックの注目アドレスにＣＰＵ１２５からアクセスがあったか否かを示すアクセスフラグを記憶する。
【００６９】
アクセスフラグ記憶回路１７６は、デコーダ１７５からサブブロック情報が出力されると、出力されたサブブロック情報に示されるサブブロックのアクセスフラグを有効化する。一方、アクセスフラグ記憶回路１７６は、判定制御回路１５４からクリア信号が出力されると、出力されたクリア信号に対応するブロックの全てのサブブロックのアクセスフラグを無効化する。アクセスフラグ記憶回路１７６は、サブブロックのアクセスフラグを有効化した場合、そのサブブロックと同一のブロックに属する全てのサブブロックのアクセスフラグを省略フラグ生成回路１７７に出力する。
【００７０】
省略フラグ生成回路１７７には、設定記憶回路１５１から出力される注目アドレスの間隔及び分割ブロック数と、アクセスフラグ記憶回路１７６から出力されるアクセスフラグと、判定制御回路１５４から出力されるクリア信号とが入力される。省略フラグ生成回路１７７は、全てのブロック毎に、そのブロックに対する判定処理を省略するか否かを示す省略フラグを記憶し、判定制御回路１５４に出力する。省略フラグ生成回路１７７は、入力された各アクセスフラグに基づいて、そのブロックに対する判定処理を省略するか否かを判定し、そのブロックに対する判定処理を省略する場合、そのブロックに対する省略フラグを有効化する。また、省略フラグ生成回路１７７は、判定制御回路１５４から出力されるクリア信号に対応するブロックの省略フラグを無効化する。
【００７１】
図８は、省略ブロック決定回路１５３による省略ブロック決定処理の動作の例を示すフローチャートである。以下、図８に示したフローチャートを参照しつつ、省略ブロック決定処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に省略ブロック決定回路１５３によりメモリコントローラ１２６の各要素と協働して実行される。
【００７２】
最初に、省略ブロック決定回路１５３は、設定記憶回路１５１から、許可フラグの設定を受け付ける（ステップＳ２０１）。
【００７３】
次に、省略ブロック決定回路１５３は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する（ステップＳ２０２）。
【００７４】
許可フラグが判定処理の実行の許可を示さない場合、省略ブロック決定回路１５３は、一連のステップを終了する。
【００７５】
一方、許可フラグが判定処理の実行の許可を示す場合、検出アドレス分割回路１７１は、アクセス監視回路１５２から検出アドレスが入力されたか否かを判定する（ステップＳ２０３）。
【００７６】
検出アドレスが入力されていない場合、省略ブロック決定回路１５３は、処理をステップＳ２０２に戻す。
【００７７】
一方、検出アドレスが入力された場合、検出アドレス分割回路１７１は、入力された検出アドレスの第１所定ビットを注目アドレス記憶回路１７２に、第２所定ビットを比較回路１７３に、第３所定ビットをアドレス出力回路１７４にそれぞれ出力する。次に、注目アドレス記憶回路１７２は、その検出アドレスに対応するブロックにおける注目アドレスの第２所定ビットを比較回路１７３に出力する。次に、比較回路１７３は、注目アドレスの第２所定ビットと検出アドレスの第２所定ビットとを比較することにより、検出アドレスが注目アドレスであるか否かを判定する（ステップＳ２０４）。
【００７８】
検出アドレスが注目アドレスでない場合、省略ブロック決定回路１５３は、処理をステップＳ２０２に戻す。
【００７９】
一方、検出アドレスが注目アドレスである場合、アドレス出力回路１７４は、検出アドレスの第３所定ビットをデコーダ１７５に出力し、デコーダ１７５は、検出アドレスに対応するサブブロック情報をアクセスフラグ記憶回路１７６に出力する。次に、アクセスフラグ記憶回路１７６は、デコーダ１７５から出力されたサブブロック情報に示されるサブブロックのアクセスフラグを有効化する（ステップＳ２０５）。
【００８０】
次に、アクセスフラグ記憶回路１７６は、そのサブブロックと同一のブロックに属する全てのサブブロックのアクセスフラグを省略フラグ生成回路１７７に出力する。次に、省略フラグ生成回路１７７は、入力された全てのアクセスフラグが有効であるか否かを判定する（ステップＳ２０６）。
【００８１】
アクセスフラグは、対応する注目アドレスに対してＣＰＵ１２５により書込処理又は読出処理が実行された場合に有効化される。一方、クリア信号は、各ブロックに対する判定処理が実行された場合に出力されるため、アクセスフラグは、対応するブロックに対して判定処理が実行された場合に無効化される。したがって、入力された全てのアクセスフラグが有効であるブロックは、前回の判定処理が実行された後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスされている。即ち、省略フラグ生成回路１７７は、入力された全てのアクセスフラグが有効であるか否かを判定することにより、そのブロックにおいて、前回の判定処理が実行された後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスされたか否かを判定する。
【００８２】
入力された全てのアクセスフラグが有効でない場合、即ちブロック内の全ての注目アドレスがＣＰＵ１２５によりアクセスされていない場合、省略ブロック決定回路１５３は、処理をステップＳ２０２に戻す。
【００８３】
一方、入力された全てのアクセスフラグが有効である場合、即ちブロック内の全ての注目アドレスがＣＰＵ１２５によりアクセスされた場合、省略フラグ生成回路１７７は、そのブロックに対する省略フラグを有効化する（ステップＳ２０７）。そして、省略フラグ生成回路１７７は、処理をステップＳ２０２に戻す。後述するように、メモリコントローラ１２６は、省略フラグが有効化されると、そのブロックに対する次回の判定処理を省略する。即ち、メモリコントローラ１２６は、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
【００８４】
前回の判定処理が実行された後に書込処理が実行されたデータは、書き込まれてから十分な時間が経過していないため、宇宙線の影響によって破壊されている可能性は低い。また、前回の判定処理が実行された後に読出処理が実行されたデータは、その読出処理に伴って誤りがあるか否かが判定されているため、宇宙線の影響によって破壊されている可能性は低い。したがって、前回の判定処理を実行した後に、書込処理又は読出処理が実行されたデータについては、次回の判定処理を省略することにより、データの信頼性を確保しつつ、メモリへのアクセス性能の低下を防止することが可能となる。
【００８５】
また一般に、メモリアクセス処理は空間的局所性を有している。即ち、メモリ空間内のあるアドレスにアクセスされた場合、そのアドレスの近傍のアドレスにもアクセスされる可能性が高い。したがって、特定のブロックにおいて、所定間隔毎に設定された全ての注目アドレスにアクセスされている場合、そのブロックには空間的局所性の高いアクセスがなされており、そのブロック内の全てのアドレスにアクセスされている可能性が高い。したがって、メモリコントローラ１２６は、各ブロック内の全てのアドレスではなく、注目アドレスにアクセスされているか否かのみを判定することにより、判定処理を実行すべきブロックを適切に決定することができる。これにより、メモリコントローラ１２６は、データの信頼性を確保しつつ、データの判定処理を実行すべきブロックの決定に係る負荷を低減することが可能となる。
【００８６】
図９は、省略ブロック決定回路１５３によるフラグクリア処理の動作の例を示すフローチャートである。以下、図９に示したフローチャートを参照しつつ、フラグクリア処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に省略ブロック決定回路１５３によりメモリコントローラ１２６の各要素と協働して実行される。
【００８７】
最初に、省略ブロック決定回路１５３は、判定制御回路１５４からクリア信号が入力されるまで待機する（ステップＳ３０１）。
【００８８】
次に、クリア信号が入力された場合、アクセスフラグ記憶回路１７６は、そのクリア信号に対応するブロックの全てのサブブロックのアクセスフラグを無効化する（ステップＳ３０２）。
【００８９】
次に、省略フラグ生成回路１７７は、そのクリア信号に対応するブロックの省略フラグを無効化する（ステップＳ３０３）。
【００９０】
次に、注目アドレス記憶回路１７２は、そのクリア信号に対応するブロックの注目アドレスを変更し（ステップＳ３０４）、処理をステップＳ３０１に戻す。
【００９１】
図１０は、判定制御回路１５４の概略構成を示す図である。
【００９２】
図１０に示すように、判定制御回路１５４は、ブロック選択回路１８１と、周期生成回路１８２と、判定実行回路１８３とを有する。
【００９３】
ブロック選択回路１８１には、設定記憶回路１５１から出力される分割ブロック数及び許可フラグと、省略ブロック決定回路１５３から出力される省略フラグと、判定実行回路１８３から出力される完了信号とが入力される。完了信号は、特定のブロックに対する判定処理が完了したことを示す。
【００９４】
図１１は、ブロック選択回路１８１によるブロック選択処理の動作の例を示すフローチャートである。以下、図１１に示したフローチャートを参照しつつ、ブロック選択処理の動作の例を説明する。なお、以下に説明する動作のフローは、主にブロック選択回路１８１によりメモリコントローラ１２６の各要素と協働して実行される。
【００９５】
最初に、ブロック選択回路１８１は、設定記憶回路１５１から、分割ブロック数及び許可フラグの設定を受け付ける（ステップＳ４０１）。
【００９６】
次に、ブロック選択回路１８１は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する（ステップＳ４０２）。
【００９７】
許可フラグが判定処理の実行の許可を示さない場合、ブロック選択回路１８１は、一連のステップを終了する。
【００９８】
一方、許可フラグが判定処理の実行の許可を示す場合、ブロック選択回路１８１は、特定のブロックを選択する（ステップＳ４０３）。なお、以下に示すステップＳ４０４〜Ｓ４１０の処理は、選択されたブロック毎に、全てのブロックに対して実行される。ブロック選択回路１８１は、例えば、メモリ空間内のアドレスが０番地に近いブロックから順に選択していく。
【００９９】
次に、ブロック選択回路１８１は、省略ブロック決定回路１５３から出力された、選択したブロックに対する省略フラグが有効であるか否かを判定する（ステップＳ４０４）。
【０１００】
省略フラグが無効である場合、ブロック選択回路１８１は、選択したブロックの判定処理の実行を要求する判定要求信号を判定実行回路１８３に出力する（ステップＳ４０５）。判定要求信号には、選択したブロック、即ち判定処理を実行するブロックを識別するための識別番号が含まれる。
【０１０１】
次に、ブロック選択回路１８１は、選択したブロックに対するクリア信号を注目アドレス記憶回路１７２に出力する（ステップＳ４０６）。
【０１０２】
次に、ブロック選択回路１８１は、判定実行回路１８３から完了信号が出力されるまで待機し（ステップＳ４０７）、判定実行回路１８３から完了信号が出力されると、処理をステップＳ４０２へ戻す。なお、ステップＳ４０６とＳ４０７の順序を入れ替え、ブロック選択回路１８１は、判定実行回路１８３から完了信号が出力されてから、選択したブロックに対するクリア信号を注目アドレス記憶回路１７２に出力してもよい。
【０１０３】
一方、省略フラグが有効である場合、ブロック選択回路１８１は、判定指示信号を判定実行回路１８３に出力せずに、選択したブロックの判定処理を省略（スキップ）する（ステップＳ４０８）。
【０１０４】
次に、ブロック選択回路１８１は、選択したブロックに対するクリア信号を注目アドレス記憶回路１７２に出力する（ステップＳ４０９）。
【０１０５】
次に、ブロック選択回路１８１は、選択したブロックの判定処理を省略したことを示す省略信号を周期生成回路１８２に出力し（ステップＳ４１０）、処理をステップＳ４０２へ戻す。なお、ステップＳ４０９とＳ４１０の順序を入れ替え、ブロック選択回路１８１は、省略信号を周期生成回路１８２に出力してから、選択したブロックに対するクリア信号を注目アドレス記憶回路１７２に出力してもよい。
【０１０６】
このように、メモリコントローラ１２６は、複数のブロック毎に判定処理を実行する。そして、メモリコントローラ１２６は、省略フラグが有効であるブロック、即ち前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
【０１０７】
図１０に戻って、周期生成回路１８２には、設定記憶回路１５１から出力される判定周期、動作モード、待機時間及び許可フラグと、ブロック選択回路１８１から出力される省略信号とが入力される。
【０１０８】
図１２は、周期生成回路１８２による周期生成処理の動作の例を示すフローチャートである。以下、図１２に示したフローチャートを参照しつつ、周期生成処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に周期生成回路１８２によりメモリコントローラ１２６の各要素と協働して実行される。
【０１０９】
最初に、周期生成回路１８２は、設定記憶回路１５１から、判定周期、動作モード、待機時間及び許可フラグの設定を受け付ける（ステップＳ５０１）。
【０１１０】
次に、周期生成回路１８２は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する（ステップＳ５０２）。
【０１１１】
許可フラグが判定処理の実行の許可を示さない場合、周期生成回路１８２は、一連のステップを終了する。
【０１１２】
一方、許可フラグが判定処理の実行の許可を示す場合、周期生成回路１８２は、所定タイミングに到達したか否かを判定する（ステップＳ５０３）。所定タイミングは、設定記憶回路１５１から設定された判定周期毎に発生するタイミングである。
【０１１３】
所定タイミングに到達していない場合、周期生成回路１８２は、処理をステップＳ５０２に戻す。
【０１１４】
一方、所定タイミングに到達した場合、周期生成回路１８２は、判定処理を実行すべきタイミングであることを示すタイミング信号を生成し、判定実行回路１８３に出力する（ステップＳ５０４）。
【０１１５】
次に、周期生成回路１８２は、ブロック選択回路１８１から省略信号が出力されているか否かを判定する（ステップＳ５０５）。
【０１１６】
省略信号が出力されていない場合、周期生成回路１８２は、処理をステップＳ５０２に戻す。
【０１１７】
一方、省略信号が出力されている場合、周期生成回路１８２は、設定記憶回路１５１から設定された動作モードが待機モードであるか否かを判定する（ステップＳ５０６）。
【０１１８】
動作モードが即時モードである場合、周期生成回路１８２は、待機せずに、処理をステップＳ５０２に戻す。このように、即時モードは、特定のブロックに対する判定処理を省略した場合、即時に他のブロック（次のブロック）に対する判定処理を実行するモードである。
【０１１９】
一方、動作モードが待機モードである場合、周期生成回路１８２は、設定記憶回路１５１から設定された待機時間だけ待機し（ステップＳ５０７）、処理をステップＳ５０２に戻す。このように、待機モードは、特定のブロックに対する判定処理を省略した場合、所定時間待機してから他のブロック（次のブロック）に対する判定処理を実行するモードである。メモリコントローラ１２６は、即時モードと待機モードの内の何れか一方で動作する。
【０１２０】
図１０に戻って、判定実行回路１８３には、設定記憶回路１５１から出力される許可フラグと、ブロック選択回路１８１から出力される判定要求信号と、データ制御回路１５５から出力される読出データとが入力される。
【０１２１】
図１３は、判定実行回路１８３による判定実行処理の動作の例を示すフローチャートである。以下、図１３に示したフローチャートを参照しつつ、判定実行処理の動作の例を説明する。なお、以下に説明する動作のフローは、主に判定実行回路１８３によりメモリコントローラ１２６の各要素と協働して実行される。
【０１２２】
最初に、判定実行回路１８３は、設定記憶回路１５１から、許可フラグの設定を受け付ける（ステップＳ６０１）。
【０１２３】
次に、判定実行回路１８３は、受け付けた許可フラグが判定処理の実行の許可を示すか否かを判定する（ステップＳ６０２）。
【０１２４】
許可フラグが判定処理の実行の許可を示さない場合、判定実行回路１８３は、一連のステップを終了する。
【０１２５】
一方、許可フラグが判定処理の実行の許可を示す場合、判定実行回路１８３は、周期生成回路１８２からタイミング信号が出力されるまで待機する（ステップＳ６０３）。
【０１２６】
周期生成回路１８２からタイミング信号が出力されると、判定実行回路１８３は、ブロック選択回路１８１から出力された判定要求信号に含まれる識別番号で指定されるブロックを特定し、特定したブロック内のアドレスを選択する（ステップＳ６０４）。なお、ステップＳ６０４〜Ｓ６０６の処理は、選択されたアドレス毎に、ブロック内の全てのアドレスに対して実行される。判定実行回路１８３は、例えば小さい順にアドレスを選択していく。
【０１２７】
次に、判定実行回路１８３は、判定処理の実行を指示する判定指示信号をデータ制御回路１５５に出力し（ステップＳ６０５）、判定処理が完了するまで、即ちデータ制御回路１５５から、選択したアドレスの読出データが出力されるまで待機する。
【０１２８】
次に、判定実行回路１８３は、特定したブロック内の全てのアドレスを選択したか否かを判定する（ステップＳ６０６）。
【０１２９】
まだ選択していないアドレスがある場合、判定実行回路１８３は、処理をステップＳ６０４に戻す。
【０１３０】
一方、全てのアドレスを選択した場合、判定実行回路１８３は、完了信号をブロック選択回路１８１に出力し（ステップＳ６０７）、処理をステップＳ６０２に戻す。
【０１３１】
図１４は、データ制御回路１５５の概略構成を示す図である。
【０１３２】
図１４に示すように、データ制御回路１５５は、アービタ回路１９１と、誤り制御回路１９２と、アクセス制御回路１９６とを有する。誤り制御回路１９２は、誤り訂正用データ生成回路１９３と、誤り検出回路１９４と、ログ記憶回路１９５とを有する。
【０１３３】
アービタ回路１９１には、ＣＰＵ１２５から出力される書込指示信号及び読出指示信号と、判定制御回路１５４から出力される判定指示信号とが入力される。アービタ回路１９１は、書込処理、読出処理及び判定処理の処理順序を調整し、実行すべき処理に対応する処理信号を誤り制御回路１９２に出力する。また、アービタ回路１９１には、誤り制御回路１９２から出力された読出データが入力される。アービタ回路１９１は、入力された読出データを、ＣＰＵ１２５又は判定制御回路１５４の内、その読出データに対応する指示信号を出力したモジュールに出力する。
【０１３４】
誤り制御回路１９２には、アービタ回路１９１から出力される指示信号が入力される。誤り制御回路１９２は、入力された指示信号に従った、ライトイネーブル信号、アドレス及びデータ、又は、リードイネーブル信号及びアドレスをアクセス制御回路１９６に出力する。また、誤り制御回路１９２には、アクセス制御回路１９６から出力される読出データが入力される。誤り制御回路１９２は、入力された読出データをアービタ回路１９１に出力する。
【０１３５】
アクセス制御回路１９６には、誤り制御回路１９２から出力されるライトイネーブル信号、アドレス及びデータ、又は、リードイネーブル信号及びアドレスが入力される。アクセス制御回路１９６は、入力された指示信号に従って、メモリ１２４に対してデータの書き込み又は読み出しを実行する。また、アクセス制御回路１９６は、メモリ１２４から読み出した読出データを誤り制御回路１９２に出力する。
【０１３６】
図１５は、データ制御回路１５５によるデータ制御処理の動作の例を示すフローチャートである。以下、図１５に示したフローチャートを参照しつつ、データ制御処理の動作の例を説明する。なお、以下に説明する動作のフローは、主にデータ制御回路１５５によりメモリコントローラ１２６の各要素と協働して実行される。
【０１３７】
最初に、アービタ回路１９１は、ＣＰＵ１２５から出力された書込指示信号及び読出指示信号と、判定制御回路１５４から出力された判定指示信号とに従って、書込処理、読出処理及び判定処理の処理順序を調整する。次に、アービタ回路１９１は、実行すべき処理に対応する指示信号を誤り制御回路１９２に出力する。誤り制御回路１９２は、アービタ回路１９１から出力された指示信号が書込指示信号であるか否かを判定することにより、書込処理を実行するか否かを判定する（ステップＳ７０１）。
【０１３８】
指示信号が書込指示信号である場合、誤り訂正用データ生成回路１９３は、書込指示信号に含まれるデータに対応する誤り訂正用データを生成する（ステップＳ７０２）。
【０１３９】
次に、誤り訂正用データ生成回路１９３は、ライトイネーブル信号と、書込指示信号に含まれるデータ及びアドレスと、生成した誤り訂正用データ及び誤り訂正用データを格納するアドレスとをアクセス制御回路１９６に出力する。次に、アクセス制御回路１９６は、誤り訂正用データ生成回路１９３から出力された信号に従って、書込指示信号に含まれるデータと、生成された誤り訂正用データとをメモリ１２４に書き込み（ステップＳ７０３）、処理をステップＳ７０１に戻す。
【０１４０】
一方、指示信号が読出指示信号又は判定指示信号である場合、誤り制御回路１９２は、読出処理又は判定処理を実行する。誤り制御回路１９２は、リードイネーブル信号と、読出指示信号又は判定指示信号に含まれるアドレスと、そのアドレスに対応する誤り訂正用データが記憶されたアドレスとをアクセス制御回路１９６に出力する。次に、アクセス制御回路１９６は、誤り制御回路１９２から出力された信号に従って、指定されたアドレスに記憶された読出データと、その読出データに対応する誤り訂正用データとをメモリ１２４から読み出す（ステップＳ７０４）。
【０１４１】
次に、アクセス制御回路１９６は、読み出した読出データ及び誤り訂正用データを誤り検出回路１９４に出力する。誤り検出回路１９４は、誤り訂正用データを用いて、読出データに誤りがあるか否かを判定する。誤り検出回路１９４は、読出データに１ビット誤りがあるか（ステップＳ７０５）、２ビット以上の誤りがあるか（ステップＳ７０６）又は誤りがないかを判定する。
【０１４２】
読出データに１ビット誤りがある場合、誤り検出回路１９４は、誤り訂正用データを用いて読出データを訂正する（ステップＳ７０７）。
【０１４３】
次に、誤り検出回路１９４は、アクセス制御回路１９６にメモリ１２４内の読出データを訂正後のデータに更新させる（ステップＳ７０８）。
【０１４４】
次に、誤り検出回路１９４は、読出データに誤りがあった旨と、誤りがあったアドレス及びデータとを示す誤り情報をログ記憶回路１９５にロギングする（ステップＳ７０９）。
【０１４５】
一方、読出データに２ビット以上の誤りがあった場合、誤り検出回路１９４は、読出データの訂正を行わず、誤り情報をログ記憶回路１９５にロギングする（ステップＳ７０９）。
【０１４６】
次に、読出データに１ビット誤りがある場合、２ビット以上の誤りがあった場合、又は、誤りがない場合の何れの場合も、誤り制御回路１９２は、読出データをアービタ回路１９１に出力する。アービタ回路１９１は、誤り制御回路１９２から出力された読出データを、ＣＰＵ１２５又は判定制御回路１５４の内、その読出データに対応する指示信号を出力したモジュールに出力し（ステップＳ７１０）、処理をステップＳ７０１に戻す。
【０１４７】
以上詳述したように、メモリコントローラ１２６は、メモリ空間を複数のブロックに分割し、ＣＰＵ１２５により空間的局所性の高いアクセスがなされているブロックに対する判定処理を省略する。即ち、メモリコントローラ１２６は、各ブロック内の全てのアドレスではなく、所定間隔毎に設定された注目アドレスにアクセスされているか否かのみを判定することにより、判定処理を実行すべきブロックを適切に決定することができる。したがって、メモリコントローラ１２６は、メモリ１２４に記憶されたデータの信頼性を確保しつつ、メモリ１２４へのアクセス性能の低下を防止することが可能となった。
【０１４８】
特に、動作モードが待機モードである場合、空間的局所性の高いアクセスがなされているブロックに対する判定処理は省略され、その判定処理が実行される予定であった期間には判定処理が実行されなくなる。これにより、ＣＰＵ１２５によるメモリアクセスとメモリコントローラ１２６による判定処理が衝突する可能性が低減し、メモリ１２４へのアクセス性能の低下を抑制することが可能となる。
【０１４９】
一方、動作モードが即時モードである場合、空間的局所性の高いアクセスがなされているブロックに対する判定処理は省略され、代わりに他のブロックに対する判定処理が実行される。これにより、空間的局所性の低いアクセスがなされているブロックに対する判定処理が頻繁に行われるため、メモリ１２４に記憶されたデータの信頼性をより向上させることが可能となる。
【０１５０】
なお、動作モードは、ＣＰＵ１２５から設定されたモードで固定されるのではなく、メモリコントローラ１２６の動作状況等に従って動的に変更されてもよい。例えば、周期生成回路１８２は、所定期間内における誤り発生量に応じて、待機モードと即時モードの内の何れかで動作するかを決定する。これにより、メモリコントローラ１２６は、状況に応じて、より適切な効果が得られるモードを柔軟に選択することが可能となる。
【０１５１】
例えば、周期生成回路１８２は、ログ記憶回路１９５を定期的に読み出し、所定期間内における誤り発生量を算出する。周期生成回路１８２は、待機モードで動作中に、所定期間内における誤り発生量が第１閾値以上となった場合、誤り発生量が増加傾向にあると判定し、待機モードから即時モードに切り替える。これにより、誤りが発生する可能性が高い場合には、発生した誤りが２ビット以上になる前に訂正が行われ易くなり、データの信頼性を向上させることができる。一方、周期生成回路１８２は、即時モードで動作中に、所定期間内における誤り発生量が第１閾値より小さい第２閾値以下となった場合、誤り発生量が減少傾向にあると判定し、即時モードから待機モードに切り替える。これにより、誤りが発生する可能性が低い場合には、メモリ１２４へのアクセス性能の低下を抑制することができる。
【０１５２】
なお、第１閾値及び第２閾値は、事前の実験等により定められる。例えば、所定期間が１日であり、第１閾値が２０件であり、第２閾値が１０件である場合、周期生成回路１８２は、待機モードで動作中に、１日の誤り発生量が２０件以上となった場合、待機モードから即時モードに切り替える。一方、周期生成回路１８２は、即時モードで動作中に、１日の誤り発生量が１０件以下となった場合、即時モードから待機モードに切り替える。このように、第１閾値と第２閾値の間にマージンを設けることにより、待機モードと即時モードが頻繁に切り替わることが抑制され、情報処理装置１００全体の動作の安定化を図ることが可能となる。
【０１５３】
また、判定周期、待機時間又は注目アドレスの間隔等についても同様に、ＣＰＵ１２５から設定された設定値で固定されるのではなく、メモリコントローラ１２６の動作に従って動的に変更されてもよい。
【０１５４】
例えば、周期生成回路１８２は、所定期間内における誤り発生量が第１閾値以上となった場合、判定周期を短くし、所定期間内における誤り発生量が第２閾値以下となった場合、判定周期を長くする。また、周期生成回路１８２は、所定期間内における誤り発生量が第１閾値以上となった場合、待機時間を短くし、所定期間内における誤り発生量が第２閾値以下となった場合、待機時間を長くする。また、周期生成回路１８２は、所定期間内における誤り発生量が第１閾値以上となった場合、注目アドレスの間隔を短くし、所定期間内における誤り発生量が第２閾値以下となった場合、注目アドレスの間隔を長くする。これにより、誤りが発生する可能性が高い場合には、データの信頼性を向上させることができ、誤りが発生する可能性が低い場合には、性能低下を抑制することができる。
【０１５５】
なお、図５、８、１１、１２及び１３に示したフローチャートでは各設定処理が最初に実行される例を示したが、各設定処理は任意のタイミングで実行されてもよい。即ち、メモリコントローラ１２６に対する各設定は、メモリコントローラ１２６の動作中に動的に変更されてもよい。
【０１５６】
図１６は、他の実施形態に係る記憶装置２２３及びメモリコントローラ２２６の概略構成を示す図である。
【０１５７】
図１６に示す記憶装置２２３及びメモリコントローラ２２６は、図１に示す記憶装置１２３及びメモリコントローラ１２６の代わりに用いられる。
【０１５８】
図１６に示すように、記憶装置２２３には、設定記憶プログラム２５１、アクセス監視プログラム２５２、省略ブロック決定プログラム２５３、判定制御プログラム２５４及びデータ制御プログラム２５５等の各プログラムが記憶される。これらの各プログラムは、プロセッサ上で動作するソフトウェアにより実装される機能モジュールである。メモリコントローラ２２６は、記憶装置２２３に記憶された各プログラムを読み取り、読み取った各プログラムに従って動作する。これにより、メモリコントローラ２２６は、設定記憶部２６１、アクセス監視部２６２、省略ブロック決定部２６３、判定制御部２６４及びデータ制御部２６５として機能する。これらの各部は、それぞれ、メモリコントローラ１２６の設定記憶回路１５１、アクセス監視回路１５２、省略ブロック決定回路１５３、判定制御回路１５４及びデータ制御回路１５５と同等の機能をソフトウェアにより実現する。
【０１５９】
即ち、メモリコントローラ２２６は、ＣＰＵ１２５からの書込指示信号に従って書込処理を実行し、ＣＰＵ１２５からの読出指示信号に従って読出処理を実行する。また、メモリコントローラ２２６は、メモリ１２４内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に判定処理を実行する。そして、メモリコントローラ２２６は、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
【０１６０】
以上詳述したように、メモリコントローラ２２６は、ソフトウェアにより構成される場合も、メモリ１２４に記憶されたデータの信頼性を確保しつつ、メモリ１２４へのアクセス性能の低下を防止することが可能となった。
【０１６１】
図１７は、他の実施形態に係る画像読取装置３００のハードウェア構成を示す図である。
【０１６２】
画像読取装置３００は、メモリ制御装置の他の例であり、例えばイメージスキャナ等である。図１７に示すように、画像読取装置３００は、インタフェース３０１と、撮像装置３０２と、画像処理装置３０３と、記憶装置３０４と、メモリ３０５と、ＣＰＵ３０６と、メモリコントローラ３０７とを有する。以下、画像読取装置３００の各部について詳細に説明する。
【０１６３】
インタフェース３０１は、例えばＵＳＢ等のシリアルバスに準じるインタフェース回路を有し、不図示の外部装置と電気的に接続して画像データ及び各種の情報を送受信する。
【０１６４】
撮像装置３０２は、ＣＣＤ（Charge Coupled Device）、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）等の撮像センサを有し、原稿を撮像した画像を生成して出力する。
【０１６５】
画像処理装置３０３は、撮像装置３０２が生成した画像に対して所定の画像処理を実行する。
【０１６６】
記憶装置３０４は、情報処理装置１００の本体記憶装置１１２と同様の記憶装置であり、記憶装置３０４には、画像読取装置３００の各種処理に用いられる各種データ、コンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて記憶装置３０４にインストールされてもよい。
【０１６７】
メモリ３０５は、情報処理装置１００のメモリ１２４と同様のメモリ装置であり、撮像装置３０２により生成された画像、画像処理装置３０３により画像処理が実行された画像等を記憶する。メモリ３０５には、各画像に誤りがあるか否かを判定し且つ訂正するための誤り訂正用データ等がさらに記憶される。
【０１６８】
ＣＰＵ３０６は、情報処理装置１００のＣＰＵ１２５と同様のＣＰＵであり、予め記憶装置３０４に記憶されているプログラムに基づいて動作する。ＣＰＵ３０６は、撮像装置３０２又は画像処理装置３０３から各種の画像を取得し、メモリコントローラ３０７を介してメモリ３０５に記憶する。
【０１６９】
メモリコントローラ３０７は、情報処理装置１００のメモリコントローラ１２６と同様のメモリコントローラである。メモリコントローラ３０７は、ＣＰＵ３０６からの書込指示信号に従って書込処理を実行し、ＣＰＵ３０６からの読出指示信号に従って読出処理を実行する。また、メモリコントローラ３０７は、メモリ３０５内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、複数のブロック毎に判定処理を実行する。そして、メモリコントローラ３０７は、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたブロックに対する次回の判定処理を省略する。
【０１７０】
以上詳述したように、画像読取装置３００においても、メモリ３０５に記憶されたデータの信頼性を確保しつつ、メモリ３０５へのアクセス性能の低下を防止することが可能となった。
【符号の説明】
【０１７１】
１２０    メモリ制御装置
３００    画像読取装置
１２４、３０５    メモリ
１２５、３０６    ＣＰＵ
１２６、２２６、３０７    メモリコントローラ
【図１】
2017151874.tif 000003
【図２】
2017151874.tif 000004
【図３】
2017151874.tif 000005
【図４】
2017151874.tif 000006
【図５】
2017151874.tif 000007
【図６】
2017151874.tif 000008
【図７】
2017151874.tif 000009
【図８】
2017151874.tif 000010
【図９】
2017151874.tif 000011
【図１０】
2017151874.tif 000012
【図１１】
2017151874.tif 000013
【図１２】
2017151874.tif 000014
【図１３】
2017151874.tif 000015
【図１４】
2017151874.tif 000016
【図１５】
2017151874.tif 000017
【図１６】
2017151874.tif 000018
【図１７】
2017151874.tif 000019