(57)【要約】【課題】判定処理を効率的に実行可能なメモリ制御装置、制御方法及び制御プログラムを提供する。【解決手段】メモリ制御装置１２０は、プロセッサ１２５と、メモリ空間内が複数のブロックに分割されたメモリ１２４と、プロセッサ１２５からの指示に従ってメモリ１２４にデータを書き込む書込処理及びメモリ１２４からデータを読み出す読出処理、及び、メモリ１２４から読み出したデータに誤りがあるか否かを判定する判定処理を実行するメモリコントローラ１２６と、を有し、メモリコントローラ１２６は、所定のタイミングで、書込処理及び読出処理に基づくアクセス回数を複数のブロック毎に測定し、アクセス回数に基づいて、連続するブロックを含む複数のグループを決定し、複数のグループ毎に判定処理を実行する。【選択図】図２
2019133578.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）等の撮像センサを有し、原稿を撮像した画像を生成して出力する。
【０２３０】
画像処理装置３０３は、撮像装置３０２が生成した画像に対して所定の画像処理を実行する。
【０２３１】
記憶装置３０４は、情報処理装置１００の本体記憶装置１１２と同様の記憶装置であり、記憶装置３０４には、画像読取装置３００の各種処理に用いられる各種データ、コンピュータプログラム、データベース、テーブル等が格納される。コンピュータプログラムは、例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて記憶装置３０４にインストールされてもよい。
【０２３２】
メモリ３０５は、情報処理装置１００のメモリ１２４と同様のメモリ装置であり、撮像装置３０２により生成された画像、画像処理装置３０３により画像処理が実行された画像等を記憶する。メモリ３０５には、各画像に誤りがあるか否かを判定し且つ訂正するための誤り訂正用データ等がさらに記憶される。
【０２３３】
ＣＰＵ３０６は、情報処理装置１００のＣＰＵ１２５と同様のＣＰＵであり、予め記憶装置３０４に記憶されているプログラムに基づいて動作する。ＣＰＵ３０６は、撮像装置３０２又は画像処理装置３０３から各種の画像を取得し、メモリコントローラ３０７を介してメモリ３０５に記憶する。
【０２３４】
メモリコントローラ３０７は、情報処理装置１００のメモリコントローラ１２６と同様のメモリコントローラである。メモリコントローラ３０７は、ＣＰＵ３０６からの書込指示信号に従って書込処理を実行し、ＣＰＵ３０６からの読出指示信号に従って読出処理を実行する。また、メモリコントローラ３０７は、メモリ３０５内のメモリ空間を複数のブロックに分割し、各ブロックにおいて所定間隔毎に注目アドレスを設定し、定期的に、一つ以上のブロックを含むグループ毎に判定処理を実行する。そして、メモリコントローラ３０７は、前回の判定処理を実行した後に、書込処理又は読出処理によって、全ての注目アドレスにアクセスしたグループに対する次回の判定処理を省略する。
【０２３５】
以上詳述したように、画像読取装置３００においても、判定処理を効率的に実行することが可能となった。
【符号の説明】
【０２３６】
１２０    メモリ制御装置
１２４、３０５    メモリ
１２５、３０６    ＣＰＵ（プロセッサ）
１２６、２２６、３０７    メモリコントローラ
【図１】
2019133578.tif 000003
【図２】
2019133578.tif 000004
【図３】
2019133578.tif 000005
【図４】
2019133578.tif 000006
【図５】
2019133578.tif 000007
【図６】
2019133578.tif 000008
【図７】
2019133578.tif 000009
【図８】
2019133578.tif 000010
【図９】
2019133578.tif 000011
【図１０】
2019133578.tif 000012
【図１１】
2019133578.tif 000013
【図１２】
2019133578.tif 000014
【図１３】
2019133578.tif 000015
【図１４】
2019133578.tif 000016
【図１５】
2019133578.tif 000017
【図１６】
2019133578.tif 000018
【図１７】
2019133578.tif 000019
【図１８】
2019133578.tif 000020
【図１９】
2019133578.tif 000021
【図２０】
2019133578.tif 000022
【図２１】
2019133578.tif 000023
【図２２】
2019133578.tif 000024